c代码:
#include <stdio.h>
int init(int a[],int len)//初始化,开始时2~100之间的数都在筛子中
{
int i;
a[0]=0;
a[1]=0;
for(i=2;i<len;i++)
{
a[i]=1;
}
return 0;
}
int found_min(int *q,int i)//返回坐标值最小的数
{
if(*(q+i)==1)
return i;
else
return 0;
}
leak(int *p,int i,int len)//过滤掉素数的倍数
{
int m=1;
while(m*i<len)
*(p+(m++)*i)=0;//biao shi fang fa
}
int main()
{
int a[101],len=101,j,s,count=0;
init(a,101);
printf("\n 2~100之间的素数是:\n");
for(j=2;j<len;j++)
{
s=found_min(a,j);
if(s!=0)
{
count++;
leak(a,j,len);
printf("%4d",j);
if(count%10==0)
printf("\n");
}
}
printf("\n 2~100之间素数移动有:%d个\n", count);
}
执行结果: