„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie finde ich effizient Faktoren einer Zahl in Python?

Wie finde ich effizient Faktoren einer Zahl in Python?

Veröffentlicht am 08.11.2024
Durchsuche:230

How to Find Factors of a Number Efficiently in Python?

Faktoren einer Zahl effizient in Python finden

Die Faktoren einer Zahl zu bestimmen ist eine häufige Aufgabe in verschiedenen Bereichen, und Python bietet mehrere effiziente Möglichkeiten, dies zu erreichen.

Ein optimierter Ansatz besteht darin, die Python-Funktion reduce zusammen mit der Liste zu verwenden Verständnis. Diese prägnante Lösung findet effektiv alle Faktoren einer bestimmten Zahl.

from functools import reduce

def factors(n):
    return set(reduce(
        list.__add__,
        ([i, n//i] for i in range(1, int(n**0.5)   1) if n % i == 0)))

Begründung:

  • Der Generatorausdruck ([i, n//i] für i in range(1, int(n**0.5) 1) if n % i == 0)) erzeugt Faktorpaare [Faktor1, Faktor2], wobei Faktor1 kleiner oder gleich der Quadratwurzel der Zahl n ist. Diese Optimierung reduziert die Rechenzeit.
  • Die Funktion „Reduzieren“ verkettet die Paarlisten zu einer einzigen Liste, während die festgelegte Datenstruktur alle Duplikate entfernt, die bei perfekten Quadraten auftreten können.
  • Für eine Zahl n muss das Listenverständnis nur eine Schleife bis zur Quadratwurzel von n durchführen, da die Zahl selbst immer mit 1 als Faktor gepaart werden kann.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3