![]() |
Teilermenge ermitteln
Hallo,
in meinem aktuellen Projekt benötge ich die ![]() Also z. B. T9={1,3,9} Klar kann ich diese mit einer Schleife errechnen; das finde ich aber nicht so schön bzw. Schleifen dauern bei großen Zahlen einfach zu lang... Ich habe schon gesucht, aber nichts gefunden: Gibt es ein rechnerisches Verfahren, um die Teilermengen bzw. deren Anzahl zu berechen? Besonders die Anzahl ist mir wichtig. Vielen Dank im voraus |
Re: Teilermenge ermitteln
Bisher gibt es keine besseren Verfahren, ansonsten könnte RSA u. ä. einpacken, da die darauf basieren, dass man eine Zahl nur per Brute-Force faktorisieren (in die Teiler zerlegen) kann. Nützlich könnten hier Lookup-Tables oder Primfaktorzerlegung sein (dazu denk ich mir noch was aus).
|
Re: Teilermenge ermitteln
Ich habe heute nochmal meinen Mathelehrer gefragt und er redete auch etwas über Primfaktorzerlegung.
Genaueres konnte er mir aber auch nicht sagen... |
Re: Teilermenge ermitteln
Bei der PFZ zerlegt man eine Zahl in die Primfaktoren. Am Ende steht dann in etwa 12=2*2*3. Die Teiler der Zahl sind die Primzahlen selber und alle Produkte aus den Primzahlen. Die Produkte per Function auszurechnen, das ist das Interessante (Frage am Rande: Wie erhalte ich das erste Element eines Arrays, welches dann auch entfernt wird?)... Vorteil (oder auch nicht) der PFZ gegenüber der direkten Bestimmung der Teiler: Laufzeit sqrt(n)+Produktbildung gegen n/2
|
Re: Teilermenge ermitteln
wie wäre es mit Rekursion, so haben wir das in der Schule gemacht!
|
Re: Teilermenge ermitteln
Zitat:
|
Re: Teilermenge ermitteln
Das ist schonmal total falsch, du kannst jede rekursive Lösung iterativ machen (teilweise ziemlich umständlich, z. B. beim durchgehen der Ordner auf der Festplatte oder alle Wurzeln eines Trees).
Aber iterative Lösungen kannst du absolut nicht alle zu einer rekursiven machen. |
Re: Teilermenge ermitteln
Zitat:
|
Re: Teilermenge ermitteln
@CLRS530:
Delphi-Quellcode:
=
for i := 1 to 5 do
maches (i);
Delphi-Quellcode:
;)
procedure recurse (i: integer)
begin maches (i); if i < 5 then recurse (i + 1); end; recurse (1) |
Re: Teilermenge ermitteln
Zitat:
![]() Und wenn du schon dabei bist, dann zeig mir auch bitte eine Iterative Funktion, die sich nicht in eine Rekursion umwandeln lässt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz