день программы "#100 Days Of Code"
Задание сводится к тому, что нам нужно найти сумму простых чисел в заданном интервале
Задачу можно разделить на: поиск простого числа, добавление этого числа в массив и сложение всех чисел массива
Определение простого числа из Википедии:
Просто́е число́ (др.-греч. πρώτος ἀριθμός) — натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя. Другими словами, число x является простым, если оно больше 1 и при этом делится без остатка только на 1 и на x. К примеру, 5 — простое число, а 6 является составным числом, так как, помимо 1 и 6, также делится на 2 и на 3.
Разбор примера:
Создаем две переменные. Одна из них - пустой массив, куда будут помещаться простые числа. Вторая - рабочая. Она нужна для выполнения или прерывания цикла .
Первым циклом мы отбираем все числа от 2 до заданного числа. Вторым - мы проверяем делиться ли каждое из этих чисел без остатка на другие, возможные числа. Если делится:if(i%prArray[j]===0)
, то цикл прерываем.
Все простые числа отправляются в созданный нами массив
Теперь остается только сложить все числа нового массива:
var summa = prArray.reduce(function(a,b){
return a+b;
});
Новую переменную для суммы, можно и не создавать, но так выглядит более наглядно.
Второй вариант решения мало отличается от первого. Там несколько другой подход в определении простого числа и добавлении его в массив.
function sumPrimes(num) { var prArray = []; var prNum; for(var i = 2; i <= num; i++){ prNum = true; for(var j= 0; j <= num-1; j++){ if(i%prArray[j]===0){ prNum = false; break; } }if(prNum){ prArray.push(i); } } var summa = prArray.reduce(function(a,b){ return a+b; }); return summa; } sumPrimes(10);
Второй вариант решения:
function sumPrimes(num) { var newArr = []; var simNum = []; for(var i = 2; i <= num; i++){ if(!newArr[i]){ simNum.push(i); for(var j = i<<1; j <= num; j+=i){ newArr[j] = true; } } } function sum(a,b){ return a+b; } return simNum.reduce(sum, 0); } sumPrimes(10);
Ответы:
sumPrimes(10)
return a number.
sumPrimes(10)
return 17.
sumPrimes(977)
return 73156.
Комментариев нет:
Отправить комментарий