求100以内的素数
普通方法
/*求100以内的素数*/
#include<cstdio>
#include<math.h>
const int maxn = 101;
//判断是否是素数
bool isPrime(int n){
if(n<=1) return false; //特判
int sqr = (int)sqrt(1.0*n);
for(int i=2;i<=sqr;i++){
if(n%i==0) return false;
}
return true;
}
int prime[maxn];
int p=0;
//寻找素数函数
void FindPrime(){
for(int i=1;i<maxn;i++){
if(isPrime(i)){
prime[p++]=i;
}
}
}
//主函数
int main(){
FindPrime();
for(int i=0;i<p;i++){
printf("%d ",prime[i]);
}
return 0;
}
筛选法(时间复杂度低)
/*求100以内的素数*/
#include<cstdio>
#include<math.h>
const int maxn = 101;
int prime[maxn];
int p=0;
bool pr[maxn]={0}; //如果i为素数,则pr[i]为false;否则pr[i]为true
void FindPrime(){
for(int i=2;i<maxn;i++){
if(pr[i]==false){ //如果i是素数
prime[p++]=i; //把素数存在prime数组中
for(int j=i+i;j<maxn;j=j+i){
pr[j]=1; //为非素数
}
}
}
}
//主函数
int main(){
FindPrime();
for(int i=0;i<p;i++){
printf("%d ",prime[i]);
}
return 0;
}