Тест на простое число с помощью JavaScript - PullRequest
0 голосов
/ 13 июня 2018

Я действительно хочу знать, почему этот код не работает.Кто-нибудь может дать мне причину, по которой {2,3,5,7} нельзя использовать в качестве основы для проверки простых чисел.Код ниже пытается суммировать все простые числа ниже 2 миллионов

var x = 2 + 3 + 5 + 7;
for(i = 2; i<2000000; i++){
    if(Number.isInteger(i/2) || Number.isInteger(i/3) || Number.isInteger(i/5) || Number.isInteger(i/7)){

    }else{

        x = x + (i);
    }
}
 console.log(x);

1 Ответ

0 голосов
/ 13 июня 2018

Как заявил TJCrowder, i не объявлено;однако, я не думаю, что это ваша единственная проблема.Вы используете небольшое подмножество простых чисел в качестве основы для поиска всех простых чисел.Это не сработает.Вот несколько примеров чисел, которые нельзя разделить на {2, 3, 5, 7}, но которые не являются простыми числами:

121 = 11 * 11
169 = 13 * 13
...

Более точный подход состоит в использовании так называемого сита Эратосфен .Существуют и другие подходы, но их сложность гораздо хуже.

Вариант сита Эратосфена называется ситом Эйлера (или ситом Эйлера).Это немного более эффективно, если использовать несколько коротких путей и сократить количество вычислений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...