c语言求素数的算法

c语言求素数的算法,第1张

根据素数的性质,代码设计如下:

设计一:判断n是否能被1~n-1整除,不能整除为素数

#include<stdioh>

int main()

{

int i, n;

scanf("%d", &n);

for (i = 2; i < n ; i++)

{

if (n%i == 0)

break;

}

if (i < n) printf("This is not a prime");

else printf("This is a prime");

return 0;

}

设计二:判断n是否能被2~√n间的整数整除,不能整除为素数

#include<stdioh>

#include<mathh>

int main()

{

int n,i;

double k;

scanf("%d", &n);

k = sqrt(n);

for (i = 2; i <= k;i++)

{

if (n%i == 0) break;

}

if (i <=k) printf("This is not a prime");

else printf("This is a prime");

return 0;

}

扩展资料:

1素数的定义是只能被1和他本身整除,1不是素数因此要判断一个数是否为素数就要判断它能不能被比他小的所有素数整除,这是一个算法(写到算法时,我只能写出用它除以比他小的所有数,造成运算速度低下)

2如果一个质数大于根号n,而n可以除尽它,那么n必然也可以除尽一个更小的质数。由此可以得到一个法2较快的素数判断算法

参考资料:

百度百科-scanf

参考资料:

百度百科-质数

除2以外,素数皆为奇数,所以对2单独处理,从3开始,将100以内的奇数逐一进行素数考察,是则输出,不是则跳过。另设一计数变量控制换行,每输出5个素数添加一个回车。代码如下:

#include "stdioh"

int main(int argc,char argv[]){

int i,n,t;

pr

#include

#include

main()

{

int a,i,flag,count=0;

for(a=1;a <=100;a++)

{

flag=0;

for(i=2;i

#include int main()

{

int i,n,k,b;

for(i=1,b=1;i<=100;i++)

{

for(n=2;n {

k=i%n;

if(k==0)

break;

}

扩展资料:


C语言注意事项:

1、预编译命令不是语言语句,不使用分号,不占用运行时间。

2、在IDE中通常包括编辑器,编译器,汇编器和链接器,在这个过程中是语言等级逐级降低的过程,从最高级的c语言到中级语言汇编语言再到低级语言机器语言,编辑器生成文件为c文件,编译器生成的文件为obj汇编器生成的文件为0文件,链接器生成的是exe文件。

3、注意 return和exit的区别, return是让本函数运行结束,而exit是让本程序运行结束。

4、在指针定义时,一定要进行初始化,否则就会出现意想不到的错误,如果不能找到对应地址赋值,那就赋给NULL(注意大写)。

5、gets可以 scanf办成办不成的事,就是可以接受空格,puts在最后会输出一个换行。

#include <stdioh>

int main()

{

  int a=0;

  int num=0;

int i;

  printf("输入一个整数:");

  scanf("%d",&num);

  for(i=2;i<num;i++){

      if(num%i==0){

          a++;

      }

  }

  if(a==0){

      printf("%d是素数。\n", num);

  }else{

      printf("%d不是素数。\n", num);

  }

  return 0;

}

扩展资料:

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

基本算法:若 k%m==0 则说明 k 不是素数。

判断整数n是否为素数——采用枚举法求解。

采用枚举算法解题的基本思路:

(1)确定枚举对象、枚举范围和判定条件;

(2)枚举可能的解,验证是否是问题的解。

枚举算法的一般结构:while循环。

参考资料来源:百度百科-枚举法

#include <stdioh>

int fun(int x)//

{

if(x<2)

return 0;//返回0,非素数

for(int i=2;ii<=x;i++)

if(x%i==0)

return 0;

return 1;//返回1,素数

}

int main()

{

int n;

scanf("%d",&n);

if(fun(n)==1)

printf("%d是素数\n",n);

else

printf("%d不是素数\n",n);

return 0;

}

先定义一个函数判断是否素数,例如:
int fun(int x){
int i;
for (i=2;i<x;i++) if (x%i==0) return 0;
return 1;
}
主程序输入m和n,然后循环他们之间的所有数,调用函数fun返回1的就输出,例如:
main(){
int m,n,i;
scanf("%d%d",&m,&n);
for (i=m;i<=n;i++) if (fun(i)) printf("%d\t",i);
}
把上面两部分连接起来,最前面加上下面一行就是完整的程序:
#include <stdioh>

楼主,你的问题不严重,不要着急,把return (1);前面的else去掉就可以了。你忘了,你需要到底都不能整除才能返回1啊,else跟if是配套的,你怎么才看到一个i不能整除,就返回1呢?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12812416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存