кодесурса

Упражнения на Java: примите четное число от пользователя и создайте комбинации, которые выражают данное число в виде суммы двух простых чисел

script1adsense2code
script1adsense3code

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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code