Упражнения на Java: примите четное число от пользователя и создайте комбинации, которые выражают данное число в виде суммы двух простых чисел
Java Basic: упражнение 233 с решением
Напишите Java-программу, которая принимает четное число (n должно быть больше или равно 4 и меньше или равно 50 000, число Гольдбаха) от пользователя и создает комбинации, которые выражают данное число в виде суммы двух простых чисел. Выведите количество комбинаций.
Число Гольдбаха: число Гольдбаха является положительным четным целым числом, которое может быть выражено как сумма двух нечетных простых чисел. [4] Поскольку четыре - это единственное четное число, большее двух, для которого требуется записать четное простое число 2, чтобы записать его в виде суммы двух простых чисел, еще одна форма утверждения гипотезы Гольдбаха состоит в том, что все четные целые числа, большие 4, являются числами Гольдбаха.
Выражение данного четного числа в виде суммы двух простых чисел называется разбиением Гольдбаха этого числа. Ниже приведены примеры разделов Гольдбаха для некоторых чётных чисел:
6 = 3 + 3
8 = 3 + 5
10 = 3 + 7 = 5 + 5
12 = 7 + 5
...
100 = 3 + 97 = 11 + 89 = 17 + 83 = 29 + 71 = 41 + 59 = 47 + 53
Пример решения:
Java-код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException,IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder builder = new StringBuilder();
int max = 50000;
System.out.print("Input an even number: ");
boolean[] primes = new boolean[max + 1];
int count = 1;
for (int i = 3; i <= max; i += 2) {
if (!primes[i]) {
count++;
if (i <= Math.sqrt(max)) {
for (int j = i; j <= max / i; j += 2) {
primes[(int) (i * j)] = true;
}
}
}
}
int[] prime = new int[count];
prime[0] = 2;
int count2 = 1;
for (int i = 3; i <= max; i += 2) {
if (!primes[i]) {
prime[count2] = i;
count2++;
}
}
int[] g = new int[max + 1];
for (int i = 0; i <= prime.length; i++) {
for (int j = i; j < prime.length && prime[i] + prime[j] <= max; j++) {
g[prime[i] + prime[j]]++;
}
}
int n = Integer.parseInt(reader.readLine());
builder.append(g[n]).append('\n');
System.out.print("\nNumber of combinations: ");
System.out.print(builder);
}
}
Пример вывода:
Введите четное число: 100 Количество комбинаций: 6
Блок - схема:
Редактор кода Java:
Внесите свой код и комментарии через Disqus.
Previous: напишите Java-программу для вычисления суммы первых n заданных простых чисел.
Далее: Напишите программу на Java, чтобы создать максимальное количество областей, полученных путем рисования n заданных прямых линий.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования