Python
# Простое число
def prost(n):
return n > 1 and all(n%d != 0 for d in range(2, int(n**0.5)+1))
# Все делители
def delit(n):
a = set()
for i in range(1, int(n**0.5)+1):
if n % i == 0:
a.add(i); a.add(n // i)
return a
# Простые делители
def prost_del(n):
a = set()
for i in range(2, int(n**0.5)+1):
if n % i == 0:
if prost(i): a.add(i)
if prost(n//i): a.add(n//i)
return a Способ 2
# Маски fnmatch
from fnmatch import *
for i in range(18579, 10**10 + 1, 18579):
if fnmatch(str(i), '54?1?3*7'):
print(i, i // 18579)
# Пример: найти R с макс кол-вом делителей
mx = 0; ans = 0
for R in range(2, 10**6):
d = len(delit(R))
if d >= mx and prost(R + 2):
mx = d; ans = R
print(ans)
# Поиск с условиями на делители
for n in range(2, 10**6):
d = delit(n)
pd = prost_del(n)
if len(pd) == 3 and sum(d) % 2 == 0:
print(n) 📚 Теория
Делители чисел. Проверка на простоту, поиск делителей по маске.