Напишите программу на языке Python, которая будет искать числа среди целых чисел в диапазоне от 321654 до 654321

  • 38
Напишите программу на языке Python, которая будет искать числа среди целых чисел в диапазоне от 321654 до 654321. Искомые числа должны иметь только нечетные делители, количество которых превышает 70. При этом, делители 1 и само число не учитываются. Для каждого найденного числа нужно записать само число и его наибольший делитель по величине. Например, для числа 15 у нас есть делители 3 и 5. Поэтому результатом программы (не учитывая количество делителей) будет пара чисел 15 и 5.
Ледяная_Магия_9186
52
Конечно! Вот программа на языке Python, которая решает данную задачу:

python
def count_odd_divisors(num):
count = 0
largest_divisor = 0

for i in range(3, int(num ** 0.5) + 1, 2):
if num % i == 0:
if i % 2 != 0:
count += 1
largest_divisor = i

other_divisor = num // i
if other_divisor % 2 != 0 and other_divisor != i:
count += 1
largest_divisor = max(largest_divisor, other_divisor)

return count, largest_divisor

numbers = []

for num in range(321655, 654321, 2):
if count_odd_divisors(num)[0] > 70:
numbers.append((num, count_odd_divisors(num)[1]))

for num, largest_divisor in numbers:
print(f"Число: {num}, наибольший делитель: {largest_divisor}")


В данной программе используется функция `count_odd_divisors`, которая принимает число и возвращает количество нечетных делителей и наибольший нечетный делитель этого числа.

Основная часть программы состоит из цикла, который перебирает все нечетные числа в заданном диапазоне от 321655 до 654321. Для каждого числа проверяется количество нечетных делителей с помощью функции `count_odd_divisors`. Если количество делителей превышает 70, то число добавляется в список `numbers` вместе с его наибольшим делителем.

Затем, программа выводит список найденных чисел и их наибольших делителей.

Надеюсь, это полностью отвечает на ваш вопрос и помогает понять решение задачи. Если у вас есть еще вопросы, пожалуйста, обратитесь.