第一个是双WA代码(为了验证它是错的我又多了一次Notpass)
#include<iostream>
#include<cmath>
using namespace std;
bool isprime(long n)
{
if(n == 2) return true;
else
{
for(int i = 2;i <= sqrt(n) + 1;i++)
{
if(n % i == 0) return false;
}
}
return true;
}
int main()
{
int N , sum, num=0, p,a[10000];
int j = 2;
cin>>N;
for(;j <= 2*N/3;j++)
{
if(isprime(j))
{
sum += j;
num ++;
a[num] = j;
}
if(sum > N) break;
}
for(int k = 1;k < num;k++) cout<<a[k]<<endl;
cout<<num-1;
return 0;
}
//下面是AC代码
#include<iostream>
#include<cmath>
using namespace std;
bool isprime(long n)
{
if(n == 2) return true;
else
{
for(int i = 2;i <= sqrt(n) + 1;i++)
{
if(n % i == 0) return false;
}
}
return true;
}
int main()
{
int N , sum, num=0, p,a[10000];
int j = 2;
cin>>N;
for(;j <= 2*N/3;j++)
{
if(isprime(j) && sum + j <= N)
{
sum += j;
num ++;
a[num] = j;
}
}
for(int k = 1;k <= num;k++) cout<<a[k]<<endl;
cout<<num;
return 0;
}