用筛选法求100以内的的素数
1.算法介绍
筛选法是指埃拉托色尼(Eratosthenes)筛选,埃拉托色尼是古希腊的著名数学家。他采取的方法是,先写下1到1000的全部整数,然后逐个判断它们是否素数,找出一个非素数,就把它挖掉,最后剩下的就是素数。
2.算法流程
1.先挖掉1;
2.用下一个未被挖掉的数p除p后面各数,把p的倍数挖掉;
3.检查p是否小于根号n的整数部分(如果n=100,p<11),成立则返回第2步,不成立则结束;
4.剩下的就是素数。
3.代码(c语言)
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, n, a[101];
for (i = 1; i <= 100; i++)
{
a[i] = i;
}
a[1] = 0;
for (i = 2; i < sqrt(100); i++)
{
for (j = i+1; j <= 100; j++)
{
if (a[i] != 0 && a[j] != 0)
{
if (a[j] % a[i] == 0)
a[j] = 0;
}
}
}
printf("\n");
for (i = 2, n = 0; i <= 100; i++)
{
if (a[i] !=0)
{
printf("%5d", a[i]);
n++;
}
if (n == 10)
{
printf("\n");
n = 0;
}
}
printf("\n");
return 0;
}
4.结果