我如何把质数的总和放在第一位,然后是它下面的质数

How do i put the total sum of prime numbers first, then the prime numbers below it

我目前正在使用这段代码,我正在尝试先输出多少个质数的总和,然后再输出质数列表

这是我的代码:

import java.util.*;

public class PrimeTime {

    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        int r, s = 0;
        
        System.out.print("Input number: ");
        r = sc.nextInt();
        
        System.out.println();
        
        for (int i = 2; i < r; i++) {
            
            int f = 0;
            
            for (int j = 2; j < i; j++) {
                
                if (i%j == 0)
                    f = 1;
            }
            
            if (f == 0) {
                
                System.out.print(i+ " ");
                s = s +1;
            }
            
        }
        System.out.println("N =" +s);
    }
    
}

这是我得到的结果:

Input number: 10

2 3 5 7 N = 4

但我要找的是这个结果:

Input number: 10

N = 4
2 3 5 7

我不知道怎么做,我试过把 S.O.P 放在不同的地方,但我不知道怎么做。

如果你想在2 3 5 7之前显示N = 4,你可以将数字(即2 3 5 7)附加到StringBuilder并在打印[=后打印相同的内容12=] 例如

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int r, s = 0;
        StringBuilder numbers = new StringBuilder();

        System.out.print("Input number: ");
        r = sc.nextInt();

        System.out.println();

        for (int i = 2; i < r; i++) {
            int f = 0;

            for (int j = 2; j <= Math.sqrt(i); j++) {

                if (i % j == 0)
                    f = 1;
            }

            if (f == 0) {
                numbers.append(i).append(' ');// Append to StringBuilder instead of printing
                s = s + 1;
            }
        }
        System.out.println("N =" + s);
        System.out.println(numbers);
    }
}

样本运行:

Input number: 10

N =4
2 3 5 7 

注意: 对于 checking the primality,最多检查 Math.sqrt(i) 就足够了,即您应该将 j < i 替换为 j <= Math.sqrt(i)

你可以将数字存储在一个列表中,然后在循环结束后打印它们
如果您还没有学习过列表,请不要担心,因为您很快就会学习。

代码如下:

 public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    int r, s = 0;
    LinkedList<Integer> list = new LinkedList<>();

    System.out.print("Input number: ");
    r = sc.nextInt();

    System.out.println();

    for (int i = 2; i < r; i++) {

        int f = 0;

        for (int j = 2; j < i; j++) {

            if (i%j == 0)
                f = 1;
        }

        if (f == 0) {

            //System.out.print(i+ " ");
            list.add(i);
            s = s +1;
        }

    }
    System.out.println("N = " +s);

    for(int i = 0; i<list.size(); i++ ) {
        System.out.print(list.get(i) + " ");
    }
}