Niklaus Wirth

Niklaus Wirth

Translate

Сумма простых чисел -Sum All Primes(14)


день программы "#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.


Комментариев нет:

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