下面以找出100~200素数为例
境界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;
}
境界2
for (i = 101; i <= 200; i += 2)//除二以外的素数都是奇数
//调整开始查找数字,调节每次的增量
境界3
数学中证明了 找出一个数i的素数只需,看 2 ~ i / 2 中
是否有 i可以整除的数字,若有,i就是非素数,反之就是素数
#include<stdio.h>
int main()
{
int i;
for (i = 101; i <= 200; i += 2)
{
int j ;
for(j = 2 ; j < i / 2; j++)
{
if (i % j == 0)
break;
}
if (j == i / 2)
printf("%d ",i);
}
return 0;
}
境界4
数学中证明了找出一个数i的素数只需,看 2 ~ 开平方i
范围比 i / 2更加准确,查找次更加少,计算机运算效率更高
中是否有 i可以整除的数字,若有,i就是非素数,反之就是素数
#include<stdio.h>
#include<math.h>
int main()
{
int i;
for (i = 101; i <= 200; i += 2)
{
int j ;
for(j = 2 ; j < (int)sqrt(i); j++)//103 -- 51
{
if (i % j == 0)
break;
}
if (j == (int)sqrt(i))
printf("%d ",i);
}
return 0;
}