①偶数除了二都不是素数,
②一个数 n 如果是合数,那么它的所有的因子不超过sqrt(n)--n的开方
#include<stdio.h>
#include<math.h>
main()
{
int i,j,n=10000;
printf("2 ");
for(i=3;i<=n;i+=2)
{
for(j=2;j<(sqrt(i)+1);j++)
{
if(i%j==0) break;
}
if(j>sqrt(i)) printf("%d ",i);
}
}
以下是常规求法,有兴趣的可以比较一下:
#include<stdio.h>
#include<math.h>
void main()
{
//一既不是素数也不是偶数、2是素数
//常规思路
int i, j,n;
for (j = 3; j <= n; j++)
{
for (i = 2; i <= j - 1; i++)
if (j%i == 0)
break; //有整除就说明不是素数
i==n,表明是素数
}
if(j==i) printf("%d ",i);
}
看不懂留言(这只是个简单的高效率,当数量级巨大时,用筛选法具体请看:http://blog.csdn.net/liukehua123/article/details/5482854)