前提知识:
素数是只能被1和自己整除的大于1的自然数,注意1不是素数
⭐方法一
思路:①:要判断n是否为素数,只需要检测n是否能被2~(n-1)之间的某个数整除就行
②:若n不能被2整除,3整除,4整除……到(n-1)整除,则n是素数
③:若n能被2~(n-1)之间的某个数整除
程序为:
#include<stdio.h>
int main()
{
int n, i;
printf("请输入一个大于1的整数:");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
break;
if(i == n)
printf("%d是素数",n);
else
printf("%d不是素数",n);
return 0;
}
解析:首先,它提示用户输入一个大于1的整数,然后使用for循环从2开始遍历到输入的整数n。在循环中,如果发现n能被i整除(即n % i == 0),则跳出循环。最后,如果i等于n,说明n是素数,输出"n是素数";否则,输出"n不是素数"。
⭐方法二
思路:count的作用是计算这个数的因数个数,如果是2,即只有1和本身,是素数。
#include<stdio.h>
int main()
{
int n, i;
int count = 0;
printf("请输入一个大于1的整数:\n");
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
if (n % i == 0)//统计要判断的数的因数个数
count++;
}
if (count == 2)//如果只有2个因数
printf("%d是素数", i);
else
printf("%d不是素数", i);
return 0;
}
- 使用
for
循环从1到i
进行遍历 - 在循环内部,使用
if
语句判断当前循环变量m
是否能被i
整除(即i % m == 0
)。如果能整除,说明m
是i
的一个因数,将计数器count
加1 - 循环结束后,使用
if
语句判断计数器count
的值是否等于2 - 如果等于2,说明
i
只有两个因数(1和它本身),因此是素数,使用printf
函数输出结果 - 否则,说明
i
不是素数,同样使用printf
函数输出结果
⭐方法三 :
#include<stdio.h>
#include<math.h>//求平方根需要引用
int main()
{
int n, m, i;//定义需要用到的变量
printf("请输入一个大于1的正整数:");
scanf("%d", &n);//输入要判断的数
m = sqrt(n);//求输入数的平方根
for (i = 2; i <= m; i++)//取2-m之间的每一个整数
if (n % i == 0)//判断能否整除n
break;//非素数,跳出循环
if (i > m)
printf("%d是素数!\n", n);//循环正常结束,是素数
else
printf("%d不是素数!\n", n);//循环中途退出,不是素数
return 0;
}