#java #loops #numbers
#java #циклы #числа
Вопрос:
В настоящее время я использую этот код, и я пытаюсь вывести общую сумму того, сколько простых чисел сначала, а затем список простых чисел
Вот мой код:
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 в разные места, и я не могу понять, как.
Комментарии:
1. Вероятно, вы захотите добавить найденные простые числа в какую-то структуру, такую как an
ArrayList<Integer>
, и распечатать их в цикле в конце.2. Вы вычисляете
N
на лету, а затем печатаете его. Вам нужно рассчитать это заранее и сделатьfor
цикла
Ответ №1:
Если вы хотите отобразить N = 4
раньше 2 3 5 7
, вы можете добавить числа (т. Е. 2 3 5 7
) к a StringBuilder
и распечатать то же самое после печати N = 4
, например
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
Примечание: для проверки простоты достаточно проверить до Math.sqrt(i)
, т.Е. Вы должны заменить j < i
на j <= Math.sqrt(i)
.
Ответ №2:
Вы можете сохранить числа в списке, а затем распечатать их после завершения цикла
Не волнуйтесь, если вы еще не изучили списки, потому что вам все равно скоро придется.
вот код:
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) " ");
}
}