设计一个程序,输出所有小于等于n(n为一个大于2的正整数)的素数。
要求:
1、每行输出10个素数
2、尽可能采用较优的算法
#include <iostream>
using namespace std;
int prime(int n){
int i;
bool *prime = new bool[n+1];
for(i=2;i<n;i++){
prime[i] = true;//先假设它们都是素数
}
for(i=2;i<=n;i++){
if(prime[i]){
for(int j=i+i;j<=n;j+=i){
prime[j] = false; //不是素数的将他们的值赋值为false,以便区分
}
}
}
cout<<"0-n的素数有:";
int t=0;//计数
for(i=2;i<=n;i++){
if(t%10==0) //每行输出10个
cout<<endl;
if(prime[i]){
t++;
cout<<i<<" ";
}
}
cout<<endl;
return 0;
}
int main() {
int n;
cout<<"n:";
cin>>n;
prime(n);
return 0;
}