P5723质数口袋
题目
题目来源:洛谷OJ 题目链接:https://www.luogu.com.cn/problem/P5723
题目描述
小A 有一个质数口袋,里面可以装各个质数。他从 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下总和超过 L(1≤L≤100000) 的质数。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
输入格式
无
输出格式
无
输入输出样例
输入 #1复制
100
输出 #1复制
2
3
5
7
11
13
17
19
23
9
思路
1.首先要清楚什么是质数,明白质数的定义才能进行下一步的运算。
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
2.在质数判断的基础上再在外面加上一个判断,当质数的总和超过题目中的输入的L后,跳出循环。
3.最后输出每次判断出来的质数以及质数的总和即可。
源代码(Java)
package 入门
3循环结构
;
import java
.util
.Scanner
;
public class Main {
public static void main(String
[] args
) {
Scanner sc
= new Scanner(System
.in
);
int l
= sc
.nextInt();
if(l
==1) {
System
.out
.println(0);
}
else if(l
<5) {
System
.out
.println(2);
System
.out
.println(1);
}
else {
int i
= 5;
int sum
= 5;
int cot
= 2;
System
.out
.println("2");
System
.out
.println("3");
boolean flag
= true;
while(flag
) {
for(int j
=2; j
<i
; j
++) {
if(i
%j
==0) {
break;
}
if(j
==i
-1 && sum
+j
<=l
) {
System
.out
.println(i
);
sum
+=j
;
cot
++;
}
if(sum
+j
>l
) {
flag
= false;
}
}
i
++;
}
System
.out
.println(cot
);
}
}
}