用“埃拉托色尼筛法”将100~200之间的数打印出来

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:03:36
请把程序写完整谢谢

素数:大概是这个意思,没有调试;
#include<stdio.h>
#include <math.h>

void main()
{
int n;
int i,m,p,q;
scanf("%d",&n);//n = 100,100 - 200;
int *numberAll = (int*)malloc(sizeof(int) * n);
for(i=1;i<n;i++)
numberAll[i] = i+99;
for(m=1;m<sqrt(n);m++)
{
if(numberAll[m]!=0)
{
for(p=m+1;p<n;p++)
{
if(numberAll[p]%numberAll[m]==0)
numberAll[p] = 0;
}
}

}
for(q=1;q<n;q++)
{if(numberAll[q]!=0 )
printf("Number is :%d\n",numberAll[q]);
}

}

是把素数打印出来吧。筛子法代码如下:
#include <stdio.h>
int main()
{
int a[201]={0},i,m;
for(i=2;i<=200;i++)
for(m=2;i*m<=200;m++)
a[i*m]=1; \*被赋为1的数组元素的下标则不是素数*\
for(i=2;i<=200;i++)
if(a[i]==0&&i>=100)
printf("%d",i);
}

注意这种算法实际上把1~200的素数都判断了,只是输出时只输出了100~200之间。