用C++编写程序:求100-200以内的所有素数

如题所述

#define SIZE 10000
bool prime[SIZE];
void Prime()
{
memset(prime,true,sizeof(prime));
prime[0]=prime[1] = false;
for(int i=2;i<SIZE;i++)
{
if(prime[i])
{
for(int j=i*2;j<=SIZE;j+=i)
prime[j] = false;
}
}
}

在使用前比如main开始时第一句调用Prime();
这样可以求出0~size之内的素数。如果i是素数则prime[i] = true;
else prime[i] = false;

这种筛法是目前最快的算法之一。size可以很大,这样比朴素算法快好多倍!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-19
#include<iostream>
using namespace std;
void main()
{
std::cout<<"输出100到200之间的素数:"<<std::endl;
int i,j,k;
for(i=101;i<200;i++)
{
k=0;
for(j=2;j<i;j++)
{
if(i%j==0)
{break;}
else
n++;
}
if(n==i-2)
cout<<i<<" ";}
cout<<endl;
}
第2个回答  2010-06-24
#include<iostream>
std::cout
void main()
{
bool c = 1;
for(int i=101;i<200;i+=2)
{
for(int j =2; j< i;j++) //根据不知道谁研究只要除到根号i就可以了,即j<=sqrt(i) 要include<math.h>
if(i%j==0)
{
c = 0;
break;
}
if(c)
{
cout<<i<<" ";
c = 0;
}
}
}本回答被提问者采纳
第3个回答  2010-06-24
#include<stdio.h>
#include<math.h>
int shu(long unsigned num) //判断是否素数,是返回1,否返回0
{
int t,i;
t=sqrt(num)+1;
for(i=2;i<t;i++)
{
if(num%i==0)
break;
}
if(i==t)return 1;
return 0;
}

int main()
{
int i,cc=0,m,t=0;
long unsigned n=200;
int shu(long unsigned num);
for(i=100;i<=n;i++)
if(shu(i))
printf("%d; ",i);

}
第4个回答  2010-06-24
#include <iostream>
using namespace std;
bool isLeap(int n);//判断是否是素数
int main()
{
int count=0;
for(int i=100;i<=200;i++)
{
if(isLeap(i))
{
cout<<i<<" ";
count++;
if(count%5==0)
cout<<endl;
}

}
system("PAUSE");
return 0;
}
bool isLeap(int num)
{
for(int i=2;i<num;i++)
{
if(num%i==0)
return 0;
}
return 1;
}