打印100到200的素数
原创
©著作权归作者所有:来自51CTO博客作者持续进化中的原创作品,请联系作者获取转载授权,否则将追究法律责任
素数:只能被1和它本身的数整除
1.试除法
#include<stdio.h>
int main()
{
int i;
for(i=100;i<=200;i++)
{
int j;
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
if(j==i)
{
printf("%d ",i);
}
}
return 0;
}
解析:
1.首先,要产生一堆100-200数字的数字,即
2.对于判断该数i是否为素数,如果是,需要我们知道从2到i-1(也就是j)的范围内都不能有能被能整除的可能,直到到达它本身才行,
即如果这个数,如果能被整除则跳出这个小循环
for(j=2;j<i;j++)
{
if(i%j==0)
{
break;
}
}
这里存在两种情况,一种是不是被本身整除,一种是到了本身的那个数 被本身整除的,如果是被本身整除的 我们就打印出来
if(j==i)
{
printf("%d ",i);
}
2.优化
主要是因为如果是素数,不可能存在i=a*b的多种答案,如果有则不是素数
#include<stdio.h>
#include<math.h>
int main()
{
int i;
for(i=100;i<=200;i++)
{
int j;
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
break;
}
}
if(j>sqrt(i))
{
printf("%d ",i);
}
}
return 0;
}
3.优化
由于偶数不是素数,则可以直接将偶数的部分排除 只算奇数