Ich habe eine Vielzahl älterer Beiträge zu diesem Thema durchgesehen, und sie haben mich auf die eine oder andere Weise verwirrt. Also fange ich gleich am Anfang an.PYTHON: Eine n-te Primzahl finden
Das Problem ist # 7 auf Projekt Euler und ich bin ein ziemlich neuer Programmierer, der versucht, sich durch die Probleme zu arbeiten. # 7 ist wie folgt.
Durch Auflisten der ersten sechs Primzahlen: 2, 3, 5, 7, 11 und 13, können wir sehen, dass die sechste Primzahl 13 ist. Was ist die 10.001 Primzahl?
Mein Problem ist wie folgt. Ich habe ein klares Verständnis davon, was Primzahlen sind und wie sie funktionieren. Der sudo-Code, den ich für dieses Problem schreiben würde, ist dies:
For n in range(3,n) #where n is some very large value.
if n%i ==0 for i in range(2,n-1)
return False
if n%i == 0 for i == n
return True
Aber ich glaube, meinen Mangel an Wissen, wenn es um Python kommt, ist mir zu behindern bei der Suche, was ich will.
In den meisten anderen Lösungen, die ich gesehen habe, begrenzen sie n auf etwas wie 125000 und ich habe ehrlich gesagt keine Ahnung, woher sie diese Zahl herkommen.
Das andere Problem ist, ich weiß nicht, wie man richtig durch einen Bereich sucht und eine Liste von Werten erstellt, die diese Beziehung in einer Weise erfüllt, dass ich dann den Max-Wert in der Liste überprüfen kann. Die Sache, die für mich am sinnvollsten wäre, wäre, jede neue Primzahl an eine Liste anzuhängen und dann einfach den Maximalwert zu nehmen, aber ich bin mir sicher, dass es einen besseren und schnelleren Weg gibt, dies zu tun. Wenn Sie antworten werden, fügen Sie bitte eine gesunde Portion Erklärung hinzu, ohne in Python Technobabble zu springen, denken Sie daran, ich bin ein Anfänger in der Programmierung.
Ich weiß, dass die typische Art, wie Leute mit Fragen wie diesem umgehen, darin besteht, den Fragesteller dazu zu bringen, die richtige Antwort zu finden, ich will das nicht. Ich möchte, dass jemand mir eine Lösung zeigt und dann Schritt für Schritt durch die Erklärung geht, was jeder Teil des Codes tut, damit ich nicht nur lernen kann, das Problem zu lösen, sondern auch eine bessere Intuition dafür, wie Python funktioniert.
Danke.
Es gibt eine 'gmpy2' Modul, mit dem Sie auf einen Blick könnten, gibt es eine' next_prime() 'Methode, die Sie den n-te Primzahl bekommen nutzen können. Oder Sie können diese Antwort beziehen [http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below- n) – Pavan
@Pavan Ich denke, er will es ohne Verwendung der richtigen Paket, die die Prime bereits behandeln –
@PhungDuyPhong hinzugefügt einen Link, wo verschiedene Algorithmen für das gleiche sind vorhanden und miteinander verglichen. – Pavan