题目的意思是1到N之间N个数素数的个数,并把素数输出。
结题思路:
对于其中一个数k,判断它是否为素数,可以利用前面已经小于k的素数,看k能否整除这些素数,如果能,则k不是素数。
如果不能,把k加入素数列表。
代码如下:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
vector<int> PrimeNum; //the prime number
cout << "please input n" << endl;
cin >> n;
PrimeNum.push_back(2); //2 is the least prime number
int j = 3; //test begin at 3
while(j<=n)
{
bool flag = true;
for(int k = 0;k< PrimeNum.size() && PrimeNum[k] < j/2;k++)
{
if(j % PrimeNum[k] == 0){
flag = false;
break;
}
}
if(flag)
PrimeNum.push_back(j);
j = j+2; //only test the odd number
}
cout << PrimeNum.size() << ":" << endl;
for(j = 0;j < PrimeNum.size()-1;j++)
cout << PrimeNum[j] <<",";
cout << PrimeNum[j] << endl;
return 0;
}