![]() |
x*y=z Lösungsmenge
Hi,
Ich habe eine Zahl z (Integer, also Element Z) gegeben und will alle ganzen Zahlen x,y ausrechnen sodass gilt x*y = z. Wie kann ich das mit Delphi ausrechnen ? :| Gruß Neutral General |
Re: x*y=z Lösungsmenge
Wohl nur manuell ( Annahme y > x sont x <-> y
Delphi-Quellcode:
[Edit: to durch downto ersett]
for y := z downto x do
if z mod y = 0 then x:= z/y; ... |
Re: x*y=z Lösungsmenge
Hi,
überleg dir doch einfach mal wie man das machen könnte. Einfachster Weg, du setzt alle Ganzzahlen ein (kleiner Tipp vorab, es sind ein bisschen viele). Also kommst du sicher schnell auf die Idee, dass kein Faktor größer als Z sein darf und irgendwie ist Z und 1 immer eine Möglichkeit. Die restlichen Zahlen sind also? Kannst mal überlegen welche Zahlen du maximal betrachten musst, sind natürlich bei weitem nicht alle zwischen 0 und z! Ja, und wie man eine Schleife programmiert und einsetzt, das weißt du sicherlich. Gruß Der Unwissende |
Re: x*y=z Lösungsmenge
Ich wuerde mit Primzahlzerlegung von z ansetzen - ginge IMO schneller, oder wenigstens mathematisch eleganter ;)
greetz Mike |
Re: x*y=z Lösungsmenge
und die Primkfaktozerlegung macht man, indem man alle integer der Menge [2;z/2] nimmt und überprüft, ob z mod diese Zahl = 0 ist
dann haste auch direckt die andere Zahl, die du ja dann nichtmehr überprüfen musst oder noch besser: bei ein einfangen und wenn z mod x = 0 ist x und z/x in deinem arry oder was auch immer speichern (array of booleans wäre da gut) und zusätzlich das z/x in iene variable speichern, weil sobald du mit x an die Zahl angelangt bist, brauchst du sie nicht mehr überprüfen und bist fertig |
Re: x*y=z Lösungsmenge
Zitat:
|
Re: x*y=z Lösungsmenge
Zitat:
In der Code-Lib gibt es eine optimierte Version dieses Probedivision-Verfahrens, daneben existieren natürlich auch noch effizientere Verfahren. [edit]Whoops :stupid: [/edit] |
Re: x*y=z Lösungsmenge
Zitat:
mfg, ratte |
Re: x*y=z Lösungsmenge
Zitat:
also: var i,i2:integer var drin:array[1..z] of boolean i:=1 repeat if z mod i = 0 then begin drin[i]:= true; drin[z/i]:= true; i2:=z/i end; inc(i) until i>=i2 so klar? |
Re: x*y=z Lösungsmenge
meins ist mehr ne skizze als ein Programm.
und perfeckt ist es auch nicht, soll nur meinen, dass man da auch selbst drauf kommen kann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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