我如何把质数的总和放在第一位,然后是它下面的质数
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) + " ");
}
}
我目前正在使用这段代码,我正在尝试先输出多少个质数的总和,然后再输出质数列表
这是我的代码:
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) + " ");
}
}