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

判断101-200之间有多少个素数,并输出所有素数。

2015-12-26 13:28 387 查看
分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
这是老师给的题,sqrt是什么,不会用。
自己写的
#include<stdio.h>
main()
{
int i,j,t=0;
for(i=101;i<=200;i++)
{
j=2;
while(j<i)
{
if(i%j==0)
break;
j++;
}
if(i==j)
{
t++;
printf("%d\t",i);
}
}
printf("\n共有%d个素数",t);
}

sqrt是平方根函数。下面是百度的

数学论证-求素数为什么是用一个数分别去除2到sqrt(这个数)

 n = a*b = sqrt*sqrt

=> a/sqrt = sqrt/b => a>=sqrt>=b 或 b>=sqrt>=a

所以只要遍历到sqrt.

比如64 = 8*8 = 2*32

你是没有必要遍历到32的,因为当你考察2的时候,32这种情况也就考察了。

下面用sqrt做一遍。

#include <stdio.h>
#include <math.h>
main()
{
int i,j,k,t=1,o=0;
for (i=101; i<=200; i++)
{
k=sqrt(i);
for (j=2; j<=k; j++)
{

if (i%j==0)
{
t=0;
break;
}
}

if (t)
{
printf("%d\t",i);
o++;
}
t=1;
}
printf("\n%d",o);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言