素数除了2,一定是质数,(2,3,5,7,11....)
如果想判断一个数是否素数,可以反过来思考,什么的质数是合数
规律:当一个素数加上这个素数*2的数一定是合数(n是素数,n+(n*2)*m ( m=1,2,3.....))
例如 n=3时,3+3*2*1=9 3+3*2*2 = 15 3+3*2*3=21...
n=5时,5+5*2*1=15 5+5*2*2=25....
n=7时,7+7*2*1=21, 7+7*2*2=35, 7+7*2*3=49
程序:
给到范围内的素数:
for(i = 3;i <=sqrt(max+1); i+=2)
if (data[i])//只选没判断过的
for (j=i*i; j<=max; j+=(i<<1))//非素数(j)加上偶数(i<<1) 还是非素数
{
printf("%d\n",j);
data[j]=0;
}