Всем привет, есть задачка которая немного в какой то мере заставила задуматься ( как начинающего ). Вот решение, алгоритм насколько я знаю известный поэтому без комментов, если будет необходимо добавлю. PHP: $s = array_fill(2, 200 - 1,true); $sum = 0; for ($i = 2; $i <= 200; $i++) { if ($s[$i] === true) { for ($j = $i * $i; $j <= 200; $j += $i) { $s[$j] = false; } } } foreach ($s as $key => $value) { if ($value === true) { $sum += $key * $key; } } echo "Сумма простых чисел: $sum"; А завис я от смысла "сумму произведений всех простых чисел на их порядковые номера". Ведь судя по этому алгоритму порядковым номером (индексом) и является простое число которое нашли. PHP: $sum += $key * $key; Друзья, все ли я правильно понял?
Нет, неправильно. Если порядковый номер $key, а число $value, то произведение числа на порядковый номер $value*=$key; И это дело прибавить к $sum В то время как у тебя считается сумма квадратов ключей.
У нас первым делом заполняется массив с числами от 2 до 200 по порядку. После в цикле каждому индексу дается значение true, после которого вычисляется простое оно или нет. Вот и получается у нас список где оставшиеся ключи с значение true (которое говорит о том, что число простое). Где ключ он же порядковый номер он же простое число. Разве не так? P.s. алгоритм брал с https://habrahabr.ru/post/133037/
Окей, я не вдавался в ваш код, но не важно, откуда вы его брали. Сказано, сумма произведений чисел на порядковые номера. Подключаем здравый смысл: Есть простые числа: 1 3 5 7 11 13 17 19 Есть их порядковые номера 0 1 2 3 4 5 6 7 ну или 1 2 3 4 5 6 7 8. И, следовательно, ожидается сумма произведений: 1*1 2*3 3*5 4*7 и тд.