Есть задача из ЕГЭ, я решил её перебором, но выполняется больше 10 минут, это плохо. Единственное, что я придумал, это находить делители не от 1 до самого числа, а от 1 до числа в корне квадратном. Более не смог ничего придумать. Можете ли подсказать в какую сторону нужно копать? или же просто показать, как должно решаться такое)
def chet(a):
d = set()
for i in range(1,round(a**0.5)+1):
if a % i == 0:
if i % 2 != 0:
d.add(i)
if round(a/i) % 2 != 0:
d.add(round(a/i))
if len(d) >= 6: return d
if len(d) == 5:
print(d)
return d
for i in range(105000000,115000000+1):
d = chet(i)
if len(d) == 5:
print(i,max(d))
на данный момент лучшее решение:
def chet(a):
d = set()
for i in range(1,a+1):
if a % i == 0 and i % 2 != 0:
d.add(i)
return d
a = 105000000
b = 115000000
for i in range(a,b+1):
d = i
while d % 2 == 0:
d //= 2
if d**0.25 == int(d**0.25):
if len(chet(i)) == 5:
print(i,d)
Ответ:
109401632 3418801
110766728 13845841
112550881 112550881
113592964 28398241