Top.Mail.Ru
Ответы

Задача питон, напишите ответ

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [248015; 251575] числа (в порядке возрастания) с нечётным количеством делителей, которые не делятся на 2. Для каждого такого числа выведите само число, количество его делителей и сумму его делителей

По дате
По Рейтингу
Аватар пользователя
Мудрец
3мес

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}")

Аватар пользователя
Мыслитель
3мес

🌳 Задача 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()

Аватар пользователя
Ученик
3мес

Ответ кобра