本文编程学习网主要和大家介绍用C语言判断素数的4个方法,通过具体的代码向大家展示,希望对大家学习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);
else
printf("%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 50
int 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");
else
printf("\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
以上就是“C语言判断素数的4个方法”的详细内容,想要了解更多C语言教程欢迎持续关注编程学习网!
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/10643/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料