Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Obere Grenze für math. Problem gesucht (https://www.delphipraxis.net/138078-obere-grenze-fuer-math-problem-gesucht.html)

Synollus 3. Aug 2009 11:09


Obere Grenze für math. Problem gesucht
 
Hi,

ich möchte gerne alle Zahlen summieren, für die gilt: Die Summe der Fakultäten der Ziffern einer Zahl ist gleich die Zahl selber.

Das trifft für 1, 2, 145 und 40585 zu. Angenommen ich weiß nicht, dass es nur 4 Zahlen gibt, wie kann ich denn eine obere Schranke ermitteln, dass mein Programm auch irgendwann terminiert?

Ich hoffe ihr könnt mir helfen. :(

Sven M. 3. Aug 2009 11:23

Re: Obere Grenze für math. Problem gesucht
 
Du könntest das Maximum des Datentyps, den du benutzt, als obere Schranke nutzen...Bei integer also 2147xxxxxx...;)

mirage228 3. Aug 2009 11:24

Re: Obere Grenze für math. Problem gesucht
 
Zitat:

Zitat von Sven M.
Du könntest das Maximum des Datentyps, den du benutzt, als obere Schranke nutzen...Bei integer also 2147xxxxxx...;)

Oder einfach die Konstanten MaxInt oder MaxLongint benutzen :)

nahpets 3. Aug 2009 11:25

Re: Obere Grenze für math. Problem gesucht
 
Hallo,

mmmh,

Du könntest eine maximale Länge für Deine Zahlen festlegen
oder für alle Zahlen probieren, die kleiner als 1.000.000 sind
oder für alle Zahlen probieren, die größer als 1.000.000 sind
oder für alle Zahlen probieren, die größer als 1.000.000 und kleiner als 1.000.000.000 sind, damit Du einen Startwert und einen Endewert hast. Dadurch kannst Du bei einem neuen Programmstart das Berechnen von bereits berechneten Werten überspringen.

Wenn Du Start- und Endewert als Eingabe oder Programmparameter machst, kannst Du das Programm beliebig konfigurieren.

Eventuell baust Du einen Abbrechenbutton ein, der eine globale Variabel setzt. Nach jedem Prüfen einer Zahl fragst Du ab, ob die globale Variabel den vom Abbrechbutton gesetzten Wert hat, wenn ja, verläßt Du die Berechnungsroutine mit Exit, Break...

Gausi 3. Aug 2009 11:28

Re: Obere Grenze für math. Problem gesucht
 
Für dieses spezielle Problem würde ich das so überlegen:

Eine Zahl x hat log_10(x) viele Ziffern. Jede Ziffer kann maximal den Wert 9 annehmen, 9! sind 362880. Intuitiv ist klar, das log(x) * 3622880 für sehr große x nicht mehr größer/gleich sein kann als x selbst. Wenn man das nicht selber lösen mag, dann gibt man mal "log_10(x) * 362880 > x" bei WolframAlpha ein und erhält dann als Ganzzahlergebnis: x < 2.309.170. Das sollte passen. :D

patti 3. Aug 2009 11:30

Re: Obere Grenze für math. Problem gesucht
 
Zitat:

Zitat von Synollus
Das trifft für 1, 2, 145 und 40585 zu. Angenommen ich weiß nicht, dass es nur 2 Zahlen gibt...

Ich verstehe gerade nicht, was du genau mit "nur 2 Zahlen" meinst. 1, 2, 145, und 40585 wären ja schon 4 :gruebel:

Edit: DENKFEHLER :oops:

Patti


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz