Найти сумму произведений всех простых чисел

Найдите сумму произведений всех простых чисел, меньших 200, на их порядковые номера, считая, что первым простым числом является 2


Определение простого числа.

Из данного определения легко можно построить алгоритм. Нам нужна функция, в которую передается число, в ней уже идет последовательная проверка каждого числа на то что оно является простым. Для этой задачи нужна вспомогательная функция, которая выполняет эту проверку. После чего строится результирующий массив со значениями отфильтрованных значении и вычисление суммы произведения каждого числа на его порядковый номер. Порядковый номер — это номер числа в пронумерованном массиве (ключ), ключи которого начинаются с единицы, а не с нуля.

/*
 * (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя
 * Найдите сумму произведений всех простых чисел, меньших 200, на их порядковые номера, считая, что первым простым числом является 2.
 * */

function checkNum($num)
{
    $matches = [];
    foreach (range(2, $num) as $val) {
        $res = $num % $val;
        if ($res === 0)
            array_push($matches, $res);
    }
    return (count($matches) === 1) ? true : false;
}

function summSimpleNum($limit = 200, $printSimpleNum = false)
{
    $a = [];
    for ($num = 2; $num <= $limit; $num++) {
        if (checkNum($num))
            array_push($a, $num);
    }
    if ($printSimpleNum) {
        foreach ($a as $val)
            echo "{$val} <br/>";
        return false;
    } else {
        $arrSumm = [];
        $summ = 0;
        /*
         * Вычисление произведения простого числа на его порядковый номер
         * для каждого простого числа и пуш значения в новый массив
         * */
        foreach ($a as $key => $val) {
            $key++;
            array_push($arrSumm, $key * $val);
        }
        /*
         * Вычисление суммы всех значении в массиве, в который попали значения
         * из предыдущего цикла
         * */
        foreach ($arrSumm as $val) {
            $summ += $val;
        }
        return $summ;
    }
}

//summSimpleNum(200, true); // распечатать все простые числа в столбик
echo summSimpleNum(200);

В итоге для значения 200, функция вернула результат 137042.

Если распечатать простые числа, — summSimpleNum(200, true), то получим:

1 — 2 
2 — 3 
3 — 5 
4 — 7 
5 — 11 
6 — 13 
7 — 17 
8 — 19 
9 — 23 
10 — 29 
11 — 31 
12 — 37 
13 — 41 
14 — 43 
15 — 47 
16 — 53 
17 — 59 
18 — 61 
19 — 67 
20 — 71 
21 — 73 
22 — 79 
23 — 83 
24 — 89 
25 — 97 
26 — 101 
27 — 103 
28 — 107 
29 — 109 
30 — 113 
31 — 127 
32 — 131 
33 — 137 
34 — 139 
35 — 149 
36 — 151 
37 — 157 
38 — 163 
39 — 167 
40 — 173 
41 — 179 
42 — 181 
43 — 191 
44 — 193 
45 — 197 
46 — 199 

Смотреть пример в интерактиве



Похожие заметки:

Прелоадер до загрузки страницы

Показываем прелоадер на страницах сайта, до его полной загрузки, реализация плавного исчезновения гифки и появление контента

Открыть здесь

Простое модальное окно на jQuery

Простой пример реализации модального окна, которое должно закрываться по клику вне области окна и быть открытым при кликах в нем

Открыть здесь


Перед тем как писать комментарии, рекомендую ознакомиться:

Markdown синтаксис »

Оформление кода »

Нужна аватарка »

Комментарии