Heim > Backend-Entwicklung > Python-Tutorial > Wie findet ein Brute-Force-Algorithmus den größten Primfaktor einer Zahl und warum ist er schneller, als jede Zahl zu testen?

Wie findet ein Brute-Force-Algorithmus den größten Primfaktor einer Zahl und warum ist er schneller, als jede Zahl zu testen?

Barbara Streisand
Freigeben: 2024-11-08 02:17:02
Original
1075 Leute haben es durchsucht

How does a brute-force algorithm find the largest prime factor of a number, and why is it faster than testing every number?

Python findet Primfaktoren

Frage:

Zweiteilige Frage:

  1. Können Sie erklären, wie ein Brute-Force-Algorithmus zum Finden des größten Primfaktors einer Zahl funktioniert?
  2. Warum ist dieser Algorithmus schneller als einer, der einfach jede Zahl testet?

Codebeispiel:

<code class="python">n = 600851475143
i = 2
while i * i < n:
    while n % i == 0:
        n = n / i
    i = i + 1

print(n)</code>
Nach dem Login kopieren

Antwort:

1. So funktioniert der Algorithmus:

Der gegebene Algorithmus verwendet rohe Gewalt, um den größten Primfaktor zu finden, indem er alle Zahlen von 2 bis zur Quadratwurzel der gegebenen Zahl n iteriert. Für jede Zahl i wird geprüft, ob sie n ohne Rest teilt. Wenn dies der Fall ist, wird n wiederholt durch i dividiert, bis n nicht mehr durch i teilbar ist. Anschließend wird i um 1 erhöht und der Vorgang fortgesetzt. Der größte Primfaktor wird der Endwert von n sein.

2. Warum der Algorithmus schneller ist:

Der angegebene Algorithmus ist schneller als das einfache Testen jeder Zahl, da er die Tatsache ausnutzt, dass jeder Primfaktor einer Zahl kleiner oder gleich ihrer Quadratwurzel ist. Indem der Algorithmus nur bis zur Quadratwurzel von n iteriert, reduziert er die Anzahl potenzieller zu überprüfender Kandidaten und verbessert so seine Effizienz erheblich.

Verbesserter Algorithmus:

Die bereitgestellten Das Codebeispiel weist einige Probleme auf, die verhindern, dass der größte Primfaktor in allen Fällen korrekt ermittelt wird. Eine korrigierte Version des Algorithmus lautet:

<code class="python">def largest_prime_factor(n):
    i = 2
    while i * i <= n:
        if n % i == 0:
            n //= i
        else:
            i += 1
    return n</code>
Nach dem Login kopieren

Dieser Algorithmus findet korrekt den größten Primfaktor, selbst für perfekte Quadrate und Zahlen mit wiederholten Primfaktoren.

Das obige ist der detaillierte Inhalt vonWie findet ein Brute-Force-Algorithmus den größten Primfaktor einer Zahl und warum ist er schneller, als jede Zahl zu testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage