Задание 25. Информатика. 2022-10
- Просмотры: 128
- Изменено: 24 ноября 2024
Напишите программу, которая перебирает целые числа, большие \( 550~000\), в порядке возрастания и ищет среди них такие, для которых наибольший натуральный делитель, не равный самому числу, не является простым числом. Программа должна найти и вывести первые \(6\) таких чисел и соответствующие им значения упомянутых делителей.
Формат вывода: для каждого из \(6\) таких найденных чисел в отдельной строке сначала выводится само число, затем упомянутый делитель.
Строки выводятся в порядке возрастания найденных чисел.
Например, для числа \(105\) наибольший натуральный делитель \(35\) не является простым, для числа \(15\) наибольший натуральный делитель \(5\) — простое число, а для числа \(13\) такого делителя не существует.
Решение:
Python
def is_prime(n):
if n == 1:
return False
if n == 2 or n == 3:
return True
if n > 3:
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def max_d_is_prime(n):
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return is_prime(n//i), n, n // i
return True, n, n
c = 0
n = 550001
while c < 6:
t = max_d_is_prime(n)
if not t[0]:
print(t[1], t[2])
c += 1
n += 1
Ответ:
550002 275001
550004 275002
550005 183335
550008 275004
550010 275005
550011 183337