用c++程序求100到200间的全部素数有几种方法?程序分别是什么?

如题所述

//两种方法:1、暴力;2、筛选法求素数

//第一种:暴力法,用循环从100到200的每个数判断一下,是素数就输出。
#include <iostream>
#include <cmath>

using namespace std;

bool prime(int num)
{
int max=(int)sqrt((double)num),i;
for(i=2;i<=max&&num%i;i++);
if(i>max) return 1;
else return 0;
}

int main()
{
int i;
for(i=100;i<=200&&prime(i)==0;i++);
cout<<i;
for(i++;i<=200;i++)
if(prime(i)) cout<<" "<<i;
cout<<endl;
return 0;
}

//第二种:筛选法求素数,原理:素数的倍数一定不是素数。从2开始,把它的倍数都去掉
#include <iostream>
#include <cmath>
#define max 200

using namespace std;

bool prime[max+1];

int main()
{
int mid=(int)sqrt((double)max);
prime[0]=prime[1]=1;
for(int i=2;i<=mid;i++)
for(int j=i+i;j<=max;j+=i)
prime[j]=1;
int i;
for(i=100;i<=200&&prime[i];i++);
cout<<i;
for(i++;i<=200;i++)
if(prime[i]==0) cout<<" "<<i;
cout<<endl;
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-29
判断一个数是x否为素数就是 2 - sqrt(x) 之间是否有整除;没有就是素数。
再从100 - 200 做一个循环,判断每个数是否为素数。
第2个回答  2011-06-29
定型循环和不定型循环,数组和指针等几种方法都行