Я пытаюсь найти самый большой простой коэффициент заданного числа (600851475143) с помощью Python. Я сделал следующий код, но я не знаю, что не так, и пользуюсь ли я правильным кодом. Помогите найти мою ошибку и улучшить ее.Самый большой простой коэффициент-Python
import math
def t(x):
l=[]
for i in range(1,int(math.sqrt(x))):
if x%i==0:
l.append(i)
return l
def check(y):
for i in range(2,1+y/2):
if y%i==0:
return 'this is not prime'
return 'ya'
print t(600851475143)
print check(486847)
Это не является эффективным. Если бы я был вами, я бы использовал сито Эратосфена, чтобы сгенерировать список простых чисел до нужного числа, а затем повторить их в обратном порядке (как вы хотите, самый большой), чтобы проверить, равно ли он его делится. – pzp
@pzp, но для этого потребуется большая память – jlhonora
@jlhonora Это правда. По крайней мере, OP должен итерации в обратном порядке и должен использовать 'xrange()' вместо 'range()'. – pzp