pnk.andrian
Если же вам надо один раз разложить на множители то будет достаточно и простого перебора:
n = 600851475141
m = []
for i in range(1, int(n**0.5), 2):
if n % i == 0:
m.extend([i, n/i])
print sorted(m)
>>> n = 24
>>> m = []
>>> for i in range(1, int(n**0.5), 2):
... if n % i == 0:
... m.extend([i, n/i])
...
>>> print sorted(m)
[1, 3, 8, 24]
>>>
>>> n = 25
>>> m = []
>>> for i in range(1, int(n**0.5), 2):
... if n % i == 0:
... m.extend([i, n/i])
...
>>> print sorted(m)
[1, 25]
>>>
а вот ещё баг
>>> n = 121
>>> m = []
>>> for i in range(1, int(n**0.5) + 1, 2):
... if n % i == 0:
... m.extend([i, n/i])
...
>>> print sorted(m)
[1, 11, 11, 121]
>>>
pnk.andrian
А при чем здесь простые числа?
притом, что ниоткуда не следует, что ему нужны простые делители числа (может, ему все делители нужны)
кстати, единица - не простое число