您的位置:首页 > 编程语言 > C语言/C++

C语言打印100 ——200之间的素数

2015-09-27 00:55 375 查看
根据素数定义,只能被1和它本身整除的自然数为素数。利用定义可以循环判断该数除以比它小的每一个自然数(不包括1),如果都不能整除,则这个数就是素数。
由于上述方法效率太低,对此方法进行优化。我们都知道偶数一定不是素数,那只求剩余一般的数。如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根,由合数定理可进一步优化,只需要循环判断该数除以比它的平方根小的每一个自然数(大于1)即可。

C语言代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
int m,k,i,count=0;
for(m=101;m<=200;m+=2)
{   k=(int)sqrt(m);/*(int)sqrt(m)将浮点型转为整型*/
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>k)
{
count++;
printf("%d ",m);
}
}printf("\ncount=%d",count);
return 0;
}
一般说来,程序进入循环体后在下次循环判断之前执行循环体里的所有语句,break和continue语句可以终止循环或忽略某些循环。break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即不是跳到下一个循环周期而是退出循环。如果break语句包含在嵌套循环里,它只跳出最里面的循环。continue:循环语句里有此语句时,程序运行到此语句时,不在执行循环体里continue后面的语句而是跳到下一个循环入口处执行下一个循环。如果continue语句包含在嵌套循环语句里,它只影响包含它的最里层的循环。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息