哆啦A梦有一个神奇的口袋,可以装下很多的质数。
现在,告诉你这个口袋的容量大小,你需要输出所有它可以装下的质数。注意,每个质数只能出现一次,也就是说不可以重复装入2这样。
输入仅一个整数,表示口袋的大小m
0≤m≤100,000
输出包括两行,第一行为若干个空格隔开的整数,表示可以被装入的质数,注意按从小到大的顺序输出。
第二行是一个整数,表示被装入的质数数量。
100
2 3 5 7 11 13 17 19 23
9
80分代码
#include<bits/stdc++.h>
using namespace std;
int L,cnt,p[100005],sum;
bool zhi(int x)
{
if(x<2)
return false;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
return false;
}
return true;
}
int main()
{
cin>>L;
for(int i=2;i<=L;i++)
{
if(zhi(i)==true&&sum+i<=L)
{
cnt++;
sum=sum+i;
p[cnt]=i;
}
}
for(int i=1;i<=cnt;i++)
{
cout<<p[i]<<endl;
}
cout<<cnt;
return 0;
}