Не понимаю код для проверки, является ли число простым или нет

Я нашел этот код в Интернете. Это не мое. Это функция для проверки, является ли данное число простым или нет. Код работает для определения, является ли число простым или нет. Я просто не понимаю, как это работает.

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.

Другие вопросы по тегам