【Java】P5723质数口袋——(OJ:洛谷)

    技术2025-12-22  12

    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; /** *@Title P5723质数口袋.java *@description TODO *@time 2020年7月4日 *@author Baisu *@version 1.0 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //输入L 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; //用于跳出whike循环 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); //输出总数 } } }
    Processed: 0.010, SQL: 9