Алгоритм проверки, является ли число простым, за O(√n)
x = int(input())
i = 2
while i * i <= x:
if x % i == 0:
print("composite")
exit()
i += 1
print("prime")
#include <bits/stdc++.h>
using namespace std;
int main() {
long long x;
cin >> x;
for (long long i = 2; i * i <= x; i++) {
if (x % i == 0) {
cout << "composite" << endl;
return 0;
}
}
cout << "prime" << endl;
return 0;
}
Простое число — это натуральное число, которое имеет ровно два различных делителя: 1 и само себя.
Достаточно проверить делители до √n, потому что если число n имеет делитель d > √n, то соответствующий ему делитель n/d будет меньше √n.
Сложность: O(√n) — проверяем все числа от 2 до √n.
Ввод: одно целое число x (x ≥ 2)
Вывод:
prime — если число простоеcomposite — если число составное17
Вывод: prime
12
Вывод: composite (12 = 2 × 6)