P5723 【深基4.例13】质数口袋
题目描述
小 A 有一个质数口袋,里面可以装各个质数。他从 222 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。口袋的负载量就是口袋里的所有数字之和。但是口袋的承重量有限,不能装得下总和超过 LLL(1≤L≤1051 \le L \le {10}^51≤L≤105)的质数。给出 LLL,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
输入格式
一行一个正整数 LLL。
输出格式
将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
输入输出样例
输入 #1
100
输出 #1
2
3
5
7
11
13
17
19
23
9
import java.util.Scanner;
/**
* @Author SouthWind
* @Date 2021/6/28 10:48
*/
public class prime_number {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int l =sc.nextInt();
int i = 2;
int sum = 0;
int count = 0;
if(l==1){
System.out.println(0);
} else {
if(l < 5){
System.out.println(2);
System.out.println(1);
}else {
sum = 5; //总和为 5 起步
count = 2; //个数从 2 起步
int n = 5; //从数字6开始判断
System.out.println(2);
System.out.println(3);
boolean b = true;
while(b){
for (int x = 2; x<n;x++){
if (n % x == 0) {
break; //(1)跳出for循环
}
if(x == n-1 && sum + n <= l){
System.out.println(n);
count++;
sum += n;
}
if(sum + n > l) {
b = false;
}
} // (1)跳到这里
n++;
} //whlie循环结束
System.out.println(count);
}
}
}
}