Не понимаю код для проверки, является ли число простым или нет
Я нашел этот код в Интернете. Это не мое. Это функция для проверки, является ли данное число простым или нет. Код работает для определения, является ли число простым или нет. Я просто не понимаю, как это работает.
function test_prime(n)
{
if (n===1)
{
return false;
}
else if(n === 2)
{
return true;
}else
{
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}
return true;
}
}
alert(test_prime(25));
Первое утверждение if и else if имеет смысл для меня. Если n равно 1, тогда верните false, поскольку 1 не является простым числом. в противном случае, если n равно 2, вернуть true, потому что 2 - простое число.
Все, что в утверждении else, не имеет смысла для меня. Если вы вызываете функцию test для 25, которое не является простым числом, 25%x, x=2, равно 1. Тогда почему функция возвращает false?
Я знаю, что в цикле for есть что-то, чего я не понимаю.
3 ответа
Если n
не является ни 1, ни 2, затем взять диапазон чисел от 2 до n
и проверьте, если n
делится на любое из этих чисел. Если это так, то это не простое число, поэтому вы возвращаете false. Если ни одно из чисел в диапазоне не делится n
, затем n
должен быть простым.
Объяснение блока else
else
{
for(var x = 2; x < n; x++) // Iterating over possible divisors i.e number - 1
{
if(n % x === 0) // Checking whether the number is divisible by any number, if it is then return false i.e. number is not a prime number
{
return false;
}
}
// If the number is not divisible by any number return true
return true;
}
for(var x = 2; x < n; x++)
{
if(n % x === 0)
{
return false;
}
}
Я думаю, вы бы посмотрели это: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
Значение х находится между 2 и n-1. Пока вы находитесь в цикле, значение x меняется: сначала x=1, затем x=2, затем x=3... когда x=5, условие выполняется, а затем возвращает false.