Задача питон, напишите ответ
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [248015; 251575] числа (в порядке возрастания) с нечётным количеством делителей, которые не делятся на 2. Для каждого такого числа выведите само число, количество его делителей и сумму его делителей
def get_divisors(n):
divisors = []
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors.append(i)
if i != n // i:
divisors.append(n // i)
return divisors
start = 248015
end = 251575
results = []
for num in range(start, end + 1):
if num % 2 != 0:
divisors = get_divisors(num)
if len(divisors) % 2 != 0:
results.append((num, len(divisors), sum(divisors)))
sorted_results = sorted(results)
for num, div_count, div_sum in sorted_results:
print(f"{num} {
div_count} {div_sum}")
🌳 Задача Python: Анализ чисел в отрезке
🎯 Цель:
➡️ Найти числа в отрезке [248015; 251575]
➡️ Условие 1️⃣: Нечетное количество делителей
➡️ Условие 2️⃣: Делители не делятся на 2 (т.е. нечетные делители)
➡️ Вывод: Число, количество делителей, сумма делителей (в порядке возрастания)
💡 Подход:
1️⃣ Цикл по числам в отрезке 🔁 [248015, 251575]
➡️ Текущее число: 🔢
2️⃣ Подсчет делителей 🧮
➡️ Инициализация счетчика делителей: ➡️ 0
➡️ Цикл от 1 до ➡️ √числа (оптимизация)
➡️ Проверка на делимость: число % делитель == 0 ❓
➡️ Если делитель - нечетный: делитель % 2 != 0 ❓
➡️ Если True ✅ : счетчик делителей += 2 (учитываем симметричные делители)
➡️ Если число - полный квадрат: делитель * делитель == число ❓
➡️ Если True ✅: счетчик делителей -= 1 (компенсируем двойной подсчет)
3️⃣ Проверка на нечетность количества делителей
➡️ счетчик делителей % 2 != 0 ❓
➡️ Если True ✅:
➡️ Вычисление суммы делителей ➕
➡️ Аналогично подсчету количества делителей, но суммируем делители
➡️ Вывод: число, счетчик делителей, сумма делителей ✍️
⚙️ Код (Python):
```python
def solve():
for num in range(248015, 251576):
count = 0
sum_div = 0
for i in range(1, int(num**0.5) + 1):
if num % i == 0 and i % 2 != 0:
count += 2
sum_div += i + num // i
if i * i == num:
count -= 1
sum_div -= i
if count % 2 != 0:
print(f"{num}, {count}, {sum_div}")
solve()
Ответ кобра