/*使用筛选法,找到2至上限间的所有质数 */
/*算法的实现基于,遍历数组所有元素,先行将数组中所有偶数删除 */
/*之后删除数组中所有3的倍数,再将数组中所有5的倍数删除 */
/*之后删除所有7的倍数,用数字作为数组的下标,在内容中存储真假 */
#include<stdio.h>
#define SIZE 1000
#define TRUE '1'
#define FALSE '0'
int main(void)
{
char cha[SIZE];
int i,j;
for(i=0;i<SIZE;i++)
cha[i]=TRUE;
for(i=2;i<SIZE;i++) /*使用筛选法在数组中选取素数 */
{
if(i!=2&&i%2==0) /*先剔除数组中的偶数 */
continue;
else if(i!=3&&i%3==0) /*剔除数组中的3的倍数 */
continue;
for(j=0;j<=SIZE;j++) /*遍历数组 */
{
if(cha[j]==FALSE)
continue;
else if(j<2)
cha[j]=FALSE;
else if(j!=i&&j%i==0)
cha[j]=FALSE;
}
}
for(i=0,j=0;i<=SIZE;i++)
{
if(cha[i]==TRUE)
{
printf("%d/t",i);
j++;
if(j%8==0)
putchar('/n');
}
}
puts("Bye~");
return 0;
}
最近不知怎么了心浮气躁的,看到一个新算法筛选法,凑合写了这个代码。