Member 13934101 Ответов: 3

Каков результат (n%2)


Сэр, я запутался !(n%2) каков был результат этого . Я знаю, что это правда или ложь, но каков был результат (n%2) plz help, я совершенно запутался

Что я уже пробовал:

Я вижу код кого-то другого в том, что он назначает функцию, которая имеет аргумент n &, который тестируется на простое число no.
код есть:

пусть isPrime = функция(n){
если(n === 2){
вернуть true;
}
если((n < 2) || !(n%2) || !Номер.isInteger(n)){
возвращать false;
}

для(Пусть i = 3; i < n - 1; i++){
если(n%i === 0){
возвращать false;
}
}
вернуть true;
}

3 Ответов

Рейтинг:
2

Patrice T

Поскольку вы уже протестировали Фактор 2, вам не нужно проверять другие четные числа.
Заменять

for(let i = 3; i < n - 1; i++){

с
for(let i = 3; i < n - 1; i+=2){

а ты в два раза быстрее.
установка конца цикла на квадратный корень из n также значительно улучшит скорость.
Для простого числа около 10000
ваша процедура будет повторяться около 10000 раз
с i+=2, он будет петлять 5000 раз
с окончанием в квадратном корне он будет петлять 50 раз


Рейтинг:
1

OriginalGriff

Это не "истина" или "ложь", это 0 или 1: % - это оператор модуля, который возвращает остаток, когда левая сторона делится на правую. И поскольку все, что делится на два, может иметь только остаток от нуля или единицы, это то, что возвращается в данном случае.

Если вы используете модуль с 10 вместо двух, он вернет наименьшую значащую цифру числа: 12345 % 10 даст вам 5.

[редактировать] Опечатки. много опечаток [/edit]


Richard Deeming

Технически, это оператор остатка, а не оператор модуля. :)

В чем же разница? Остаток против модуля – сказочные приключения в кодировании[^]

Рейтинг:
0

raddevus

Это интригующий вопрос с интересной функцией для простых чисел.
Слегка измените код, и вы сможете видеть значение n%i каждый раз через цикл и узнать, как это работает.
Все что вам нужно сделать это добавить одну строку в цикл for:
консоли.журнал ("=н "+ н + " : "+ н%я);
На самом деле эта строка лучше (более четко показывает вывод)

console.log(n + "%"+i + " = " + n%i);

Это даст следующее для isPrime(7);
7%3 =   1
7%4 =   3
7%5 =   2

Я тоже обновил jsbin.

Теперь, когда вы запускаете его, вы будете видеть значение n%i каждый раз через цикл.

let isPrime = function(n){
if(n === 2){
return true;
}
if((n < 2) || !(n%2) || !Number.isInteger(n)){
return false;
}
for(let i = 3; i < n - 1; i++){
console.log(n + "%"+i + " = " + n%i);
if(n%i === 0){

return false;
}
}
return true;
}


Вот ссылка на jsbin, который я создал : JS Bin - совместная отладка JavaScript[^]
Вы можете пойти туда и увидеть isPrime(7) run, когда вы нажмете кнопку Run with JS.
Вам нужно открыть окно консоли браузера (F12 в большинстве браузеров), чтобы увидеть консоль.вывод журнала.