кодесурса
«PHP

Упражнения по PHP: выведите количество комбинаций

script1adsense2code
script1adsense3code

PHP: упражнение 66 с решением

Напишите программу PHP, которая принимает четное число (n должно быть больше или равно 4 и меньше или равно 50000, число Гольдбаха) от пользователя и создает комбинации, которые выражают данное число как сумму двух простых чисел. Выведите количество комбинаций.
Число Гольдбаха: число Гольдбаха является положительным четным целым числом, которое может быть выражено как сумма двух нечетных простых чисел. [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.

Ввод: n (n ≤ 10000). Введите 0 для выхода из программы.

Пример решения: -

PHP-код:

<?php
define('MAX', 50001);
define('COUNT', 5133);
$table = new SplFixedArray(MAX);
$table[0] = $table[1] = false;
$primes = new SplFixedArray(COUNT);
$p_i = 0;
$i = 2;
while ($i < MAX) {
    $primes[$p_i++] = $i;
    $table[$i] = true;
    for ($j = $i * 2; $j < MAX; $j += $i) {
        $table[$j] = false;
    }
    while (++$i < MAX && $table[$i] === false);
} 
while (true) {
    fscanf(STDIN, '%d', $n);
    if ($n === 0) {
        break;
    }
    $c = 0;
    for ($i = 0; $i < COUNT; $i++) {
        if ($primes[$i] > $n / 2) {
            break;
        }
        if ($table[$n - $primes[$i]]) {
            $c++;
        }
    }
    echo "Number of combinations: ";
    echo $c . PHP_EOL;
}
?>

Пример ввода:
100
0

Пример вывода:

 Количество комбинаций: 6 

Блок - схема:

«Блок-схема:

Редактор кода PHP:

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Предыдущий: Напишите программу PHP для вычисления суммы первых n заданных простых чисел.
Далее: Напишите программу PHP, чтобы создать максимальное количество областей, полученных путем рисования n заданных прямых линий.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code