求所有小于等于n的素数

设计一个程序,输出所有小于等于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;
}

猜你喜欢

转载自blog.csdn.net/zmeilin/article/details/81187942