Mein Problem zu handhaben ist den größten Primfaktor von 600851475143.Wie große Zahlen in Python
-Code zu finden:
class Prime:
def isPrime(self,n): # Checks if number is prime
number=n
flag=0
#code to exclude 1 nd 2 from check
if number==1:
return False
elif number==2:
return True
#code to loop through and check if number is divisible
for i in range(2,(number/2)+1):
if (number)%i==0:
flag=1
break
else:
flag-0
continue
#code to return result
if flag==0:
return True
elif flag==1:
return False
Aber dieser Code löst einen Überlauf-Fehler - „OverflowError: range() Ergebnis hat zu viele Gegenstände ". Was kann ich tun, um eine große Anzahl zu bewältigen?
Ich versuchte mit n = int(raw_input())
wie in "Python long integer input", vorgeschlagen, aber kein Glück!
def main():
p=Prime()
n = int(raw_input())
print p.isPrime(n)
Das Umschalten von 'range()' für 'xrange()' würde auch weniger Speicher benötigen. – Mikael
Das meiste davon ist, "wie effizientere Faktorisierung geschrieben wird", anstatt das unmittelbare (und trivial vermeidbare) Problem des unnötigen Erstellens einer riesigen In-Memory-Sammlung von ganzen Zahlen anzugehen. – pvg