Подсчёт количества натуральных делителей числа
x = int(input())
i = 1
c = 0
while i * i <= x:
if x % i == 0 and i * i != x:
c += 2
elif i * i == x and x % i == 0:
c += 1
i += 1
print(c)
#include <bits/stdc++.h>
using namespace std;
int main() {
long long x;
cin >> x;
long long i = 1, c = 0;
while (i * i <= x) {
if (x % i == 0 && i * i != x) {
c += 2;
} else if (i * i == x && x % i == 0) {
c += 1;
}
i++;
}
cout << c << endl;
return 0;
}
Делители числа идут парами: если d — делитель n, то n/d — тоже делитель. Исключение — случай, когда d = n/d (то есть d² = n).
Для n = 12: делители 1, 2, 3, 4, 6, 12 → всего 6 делителей.
Временная сложность: O(√n)
Ввод: целое число x (x ≥ 1)
Вывод: количество делителей
12
Вывод: 6