Как проверить, простое ли число
Короткий ответ
Достаточно проверить делители до квадратного корня из числа:
<?php
function isPrime(int $number): bool
{
if ($number < 2) {
return false;
}
for ($divisor = 2; $divisor * $divisor <= $number; $divisor++) {
if ($number % $divisor === 0) {
return false;
}
}
return true;
}
var_dump(isPrime(97), isPrime(91));Результат:
bool(true)
bool(false)Все простые числа до N
Отфильтруйте диапазон той же функцией:
<?php
function isPrime(int $number): bool
{
if ($number < 2) {
return false;
}
for ($divisor = 2; $divisor * $divisor <= $number; $divisor++) {
if ($number % $divisor === 0) {
return false;
}
}
return true;
}
echo implode(', ', array_filter(range(1, 30), 'isPrime'));Результат:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29Функции из этого ответа
- sqrt — Возвращает квадратный корень числа.
- range — Создаёт массив с последовательностью значений.
- array_filter — Оставляет в массиве элементы, прошедшие проверку.