回复 10楼 chenyundage
求一个某数段的素数(101到200之间)。。。。。。。。
#include<stdio.h>
int main()
{
fun();
}
int fun()
{
int n,m,i;
for(n=101;n<=200;n++)
{
for(i=2;i<=n;i++)
//从2开始到n本身,如果有哪个数能被n整除那就跳出循环
if(n%i==0) break;
if(i>=n)//循环结束后判断一下他是什么时候跳出循环的,如果是i==n那就说明这个数是素数了。如果是,就做下面的输出
{printf("%4d",n);
m=m+1;}
}
printf("\n");
return 0;
}
再讲一点关于素数的优化,比较常用的
1.所有偶数除了2都不是素数,所以就这道题而言,n每次应该都是+=2保持素数,而里面做i的循环也可以只对奇数进行整除判断
2.里面这个for(i..)循环的结束条件只要到了i<=sqrt(n)就行,至于为什么,很简单,如果存在一个大于n的平方根的自然数a和另一个自然数b相乘等于n,那么自然数b一定小于n的平方根,也就是说我们在遍历到n的平方根之前就该遍历到这个数了