700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言判断素数的几种方法

C语言判断素数的几种方法

时间:2022-02-02 12:23:26

相关推荐

C语言判断素数的几种方法

素数的定义:只能被常数1或自己整除,不能被其他整数整除的正整数。

1.从2——x-1循环

#include<stdio.h>int main(){int x;int IsPrime = 1;//定义变量IsPrime并赋初值1 即x为素数scanf_s("%d", &x);for (int i = 2; i < x; i++){if (x % i == 0){IsPrime = 0;break;}}if (IsPrime == 0)printf("%d is not a prime number", x);elseprintf("%d is a prime number", x);return 0;}

测试结果:

23

23 is a prime number

需要注意的是定义的变量IsPrime赋初值为1;其次是for循环中i是从2开始增加。另外加一句:break;与continue;的区别在于:程序执行到break;语句时,会跳出当前循环即结束当前循环;而continue;是不再执行当前循环内continue;语句之后的部分。

拓展:利用循环嵌套输出n以内的素数

#include<stdio.h>int main(){int n;int count=0;int i,j;scanf_s("%d",&n);for(i=1;i<=n;i++){int IsPrime=1;for( j=2;j<n;j++){if(i%j==0)IsPrime=0;break;}if (IsPrime == 1){printf("%d\t", i);count++;if (count % 5 == 0) //每5个输出做一行printf("\n");}}return 0;}

测试结果:

50

1 3 5 7 9

11 13 15 17 19

21 23 25 27 29

31 33 35 37 39

41 43 45 47 49

2.除去偶数之后,3——x-1,每次加2

定义一个判断是否为素数的函数

int IsPrime(int x){int ret=1;//ret含义与之前的变量IsPrime相同if(x==1||(x!=2&&x%2==0))ret=0;for(int i=3;i<x;i+=2){if(x%i==0){ret=0;break;} }return ret;}

3.通过sqrt()函数

int IsPrime(int x){int ret=1;//ret含义与之前的变量IsPrime相同if(x==1||(x!=2&&x%2==0))ret=0;for(int i=3;i<sqrt(x);i+=2) //循环到sqrt(x){if(x%i==0){ret=0;break;} }return ret;}//使用sqrt()函数需要包含头文件<math.h>

4.通过判断是否能被已经判断过的并且<x的素数整除,利用数组

#include<stdio.h>#define N 50int IsPrime(int x, int known[], int number);int main(){int i = 3;int count = 1;int array[N]={2};while (count < N){if (IsPrime(i, array, count))array[count++] = i;i++;}for (i = 0; i < N; i++){printf("%d", array[i]);if ((i + 1) % 5 == 0)printf("\n");elseprintf("\t");}return 0;}int IsPrime(int x, int known[], int number){int ret = 1;int i;for ( i = 0; i < number; i++){if (x % known[i] == 0){ret = 0;break;}}return ret;}

测试结果:

2 3 5 7 11

13 17 19 23 29

31 37 41 43 47

53 59 61 67 71

73 79 83 89 97

101 103 107 109 113

127 131 137 139 149

151 157 163 167 173

179 181 191 193 197

199 211 223 227 229

以上便是几种判断素数的方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。