【菜鸟进阶之路】P5723 【深基4.例13】质数口袋 - 洛谷
来源:锐游网
一、题目部分
题目描述
小A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下总和超过 L(1≤L≤100000) 的质数。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
输入格式
无
输出格式
无
输入输出样例
输入 #1
100
输出 #1
2
3
5
7
11
13
17
19
23
9
二、解题过程
思路
(1)输入整数n;
(2)如果n等于1,不存在质数,直接输出0;
(3)如果n大于等于2,因为2是质数,所以质数个数cnt定义为1,输出2;
(4)然后从3开始循环找质数,符合条件的输出,并用s存储质数之和,cnt++,直到s大于n退出循环;
(5)输出cnt。
提交AC答案
#include<bits/stdc++.h>
using namespace std;
int n,cnt=1,s=2;
int find(int n)
{
for(int i=2;i<n;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
scanf("%d",&n);
if(n==1)
{
printf("%d",0);
}
else if(n>=2)
{
printf("%d\n",2);
for(int i=3;i<=n;i++)
{
if(find(i))
{
s+=i;
if(s>n) break;
printf("%d\n",i);
cnt++;
}
}
printf("%d",cnt);
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容