分析:
根据素数的定义思考。素数是大于1的自然数,除了1和自身外,其他数都不是它的因子。
那我们就可以用一个循环,从2开始遍历到这个数减去1,如果这个数都不能被整除,那么这个数就是素数。
按照思路我们一开始可能会写成
//错误示范
#include <stdio.h>
int main()
{
int x;
int i;
printf("请输入一个正整数:");
scanf("%d",&x);
for(i=2;i<=x;i++)
{
if(x%i==0)
printf("%d 不是素数",x);
}
//写到这里会发现出现问题了
return 0;
}
写到这我们发现,假如输入的是6
i=2时,可以整除,于是输出:不是素数,i++。接着会继续循环,i=3时,可以整除,于是又会输出一次:不是素数。
那么怎么样合理的跳出循环并进行输出呢?
可以再借助一个变量,此变量和是素数为同一阵营,也就是说当该数可以被整除时,此变量进行变化
代码如下:
#include <stdio.h>
int main()
{
int x;
int i;
int isPrime=1;
printf("请输入一个正整数:");
scanf("%d",&x);
for(i=2;i<x;i++)
{
if(x%i==0)
{
isPrime=0;
break;
}
}
if(isPrime==1)
printf("%d 是素数",x);
else
printf("%d 不是素数",x);
return 0;
}