大家帮帮我吧!明天就要用啊!十万火急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:55:34
题目:编制用筛法求1-n(n≤200)以内素数的程序。
分析:由希腊著名数学家埃拉托色尼提出的所谓“筛法”,步骤如下:
①将所有候选数放入筛中;
②找筛中最小数(必为素数)next,放入集合primes中;
③将next的所有倍数从筛中筛去;
④重复②~④直到筛空。
编程时,用集合变量sieve表示筛子,用集合primes存放所有素数

#include <iostream>
using namespace std;

void main()
{
int primes[47]={1},sieve[200];
int next;
for(int i=0;i<200;i++)
sieve[i]=i+1; //将所有候选数放入筛中
for(int a=1;a<47;a++)
{
for(int j=1;j<200;j++)
{
if(sieve[j]!=0)
{
primes[a]=sieve[j];
next=sieve[j];
sieve[j]=0;
break;
} //寻找最小的next
}
for(int x=1;x<=100;x++)
for(int y=1;y<=200;y++)
if(next*x==sieve[y])
sieve[y]=0; //将next的所有倍数从筛中筛去
}
for(int t=0;t<47;t++)
cout<<primes[t]<<'\t';
cout<<endl;
}