**题目要求:**输入一个整数n,判断他是否为素数(质数)
**分析:**采用的算法是,让n除以i,如果n能被2~(n-1)之中的任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环。
代码如下:
#include "stdio.h"
void main()
{
int n,i;
scanf("%d",&n);
n=10;
for(i=2;i<n;i++)
{
if(n%i==0)//1.如果求余等于零 说明能整除 那么就不是素数 所以后边的i就不用验证了 直接跳出循环;2.如果求余不等于零循环继续 直到i不再小于n 跳出循环
break;
}
if(i<n)//跳出循环后判断是因为1跳出的循环 还是因为2跳出的循环。如果是因为1那么n不是素数;如果是因为2,那么n是素数
printf("不是");
else
printf("是");
}
运行结果:
分析:
这个题中为什么不在for循环中判断并输出是否为为素数呢?
1.如果在for循环中输出是否为素数 那么每循环一次就会输出一次结果,这肯定不是我们想要的
2.遇到1.中的情况我们肯定会想到用break结束循环,想一下:(如下为设想的for循环部分)
//这部分是错误演示
for(i=2;i<n-1;i++)
{
if(n%i==0)
{
printf("不是");
break;
}
if(n%i!=0)
{
printf("是");
break;
}
}
假设n=15,循环开始 n%2=1,应该输出“是”,可是15并不是素数,所以结果就不对了。