Ускорение кода в работе с миллионными числами
Найдите все натуральные числа, принадлежащие отрезку [35 000 000; 40 000 000], у которых ровно пять различных нечётных делителей (количество чётных делителей может быть любым). В ответе перечислите найденные числа в порядке возрастания.
for i in range(35000000,40000000+1):
cnt=0
sqrt=round(i**0.5)
for j in range(1,sqrt+1):
if i%j==0:
if j%2==1:
cnt+=1
k=i%j
if j%2==1:
cnt+=1
if j==k:
cnt-=1
if cnt>5:
break
if cnt==5:
print(i)
работает очень долго, измените код, чтобы он заработал быстрее
UPDATE
import math
for i in range(35000000,40000000+1):
cnt=0
sqrt=int(math.sqrt(i))
for j in range(1,sqrt+1,2):
if i%j==0:
if j%2==1:
cnt+=1
k=i%j
if k%2==1:
cnt+=1
if j==k:
cnt-=1
if cnt>5:
break
if cnt==5:
print(i)