Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Größte Zahlenklasse (https://www.delphipraxis.net/121114-groesste-zahlenklasse.html)

STS301 22. Sep 2008 16:14


Größte Zahlenklasse
 
hi

Ich will eine (zb. 1000 stellige Zahl) eingeben, nur was ich weiß gibt es keine zahlenKlasse(integer, int64, usw.) die eine so große Zahl aufnimmt.
Wie kann man eine Variable dennoch definieren, ohne dass Delphi abbricht.

Dax 22. Sep 2008 16:16

Re: Größte Zahlenklasse
 
Hier im Forum suchenIInteger, Hier im Forum suchenTBigInt, eventuell VLI... Da gibt es einige Möglichkeiten, aber keine, die schon direkt in Delphi eingebaut wäre-

grenzgaenger 22. Sep 2008 16:23

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
hi

Ich will eine (zb. 1000 stellige Zahl) eingeben, nur was ich weiß gibt es keine zahlenKlasse(integer, int64, usw.) die eine so große Zahl aufnimmt.
Wie kann man eine Variable dennoch definieren, ohne dass Delphi abbricht.

kannst sie denn fehlerfrei abtippen :twisted:

STS301 22. Sep 2008 16:23

Re: Größte Zahlenklasse
 
sry, habe vergessen, dass ich es in Lazarus mache, gibt es so eine Möglichkeit auch in Lazarus?

grenzgänger: abtippen, ja, nur nichts damit machen, ohne dass mit Lazarus abbricht

Mackhack 22. Sep 2008 16:27

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
sry, habe vergessen, dass ich es in Lazarus mache, gibt es so eine Möglichkeit auch in Lazarus?

grenzgänger: abtippen, ja, nur nichts damit machen, ohne dass mit Lazarus abbricht

Was ist denn eine 1000-stellige Zahl? Ich meine ich weis was 1000 Stellen sind aber was stellt sie dar? :?:

STS301 22. Sep 2008 16:31

Re: Größte Zahlenklasse
 
ich weiß es klingt absurd und ich weiß selbst, dass ich sie nie finden werde, aber ich bin einer der Leute die der Primzahlensuchvirus angesteckt hat.

grenzgaenger 22. Sep 2008 16:34

Re: Größte Zahlenklasse
 
dann kannst doch deine gefunde neue stelle, immer gleich ausgeben...

Mackhack 22. Sep 2008 16:34

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
ich weiß es klingt absurd und ich weiß selbst, dass ich sie nie finden werde, aber ich bin einer der Leute die der Primzahlensuchvirus angesteckt hat.

Ok macht Sinn.

Sarkasmus on:
Mach weiter so bist weg von der Strasse und out of trouble in der Zeit solange du suchst!
Sarkasmus off:

STS301 22. Sep 2008 16:35

Re: Größte Zahlenklasse
 
ja schon, nur ich muss ja nachschauen, ob es eine Primzahl ist oder nicht

Dax 22. Sep 2008 16:52

Re: Größte Zahlenklasse
 
Schnapp dir doch einfach C/++ und libgmp ;) Aber dafür gibt es sicher auch Lazarus-Bindings... Zur Not bastelst du selbst ein kleines mit allen Funktionen, die du brauchst, zusammen.

STS301 22. Sep 2008 17:18

Re: Größte Zahlenklasse
 
ok, danke da ich die .pas Units ja auch in Lazarus verwendn kann, schaue ich einmal nach.

Danke für die Hilfe!

mschaefer 22. Sep 2008 17:26

Re: Größte Zahlenklasse
 
Moin, moin,

Da hat das andere Forum etwas zu bieten:
Multiplizieren in Strings

Grüße // Martin

STS301 22. Sep 2008 17:28

Re: Größte Zahlenklasse
 
danke, das vereinfacht die sache natürlich

Dax 22. Sep 2008 17:40

Re: Größte Zahlenklasse
 
Es mag funktionieren, aber besonders schnell funktionieren wird es wahrscheinlich nicht. Das wirst du gerade bei Zahlen über etwas 100 Stellen (vielleicht sogar früher) sicher merken. String-Mathematik bearbeitet ~3,3 bit pro Aktion, normale x86 Int-Mathematik bearbeitet 32. Noch dazu fallen bei den Strings etlichen Operationen an, die garnicht nützlich sind... Für deine Zwecke ist eine spezialisierte und vor allem optimierte Library mit passenden Algorithmen unerlässlich, falls du dich nicht schwarz warten willst, während ich GMP# in Zahlenbereichen arbeite, von denen du zeit- und speichermässig und träumen kannst ;o)

gammatester 22. Sep 2008 18:24

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
ja schon, nur ich muss ja nachschauen, ob es eine Primzahl ist oder nicht

Theoretisch geeignet für solche Sachen und Lazarus/Freepascal und Delphi ist meine MArith-Bibliothek oder Marcel Martins NX

Allerdings ist der Nachweis, daß eine allgemeine 1000-stellige Zahl prim ist, sehr SEHR zeitaufwendig. Es sei denn, sie hat spezielle Eigenschaften, zB eine Mersenne-Zahl, oder man begnügt sich mit wahrscheinlich prim. Wenn sie zusammengesetzt, ist das relativ einfach nach zu weisen.

Beispiel mit meinen Demo-Calculator

ispprime(mersenne(3217)) = true in 2.2 s
ispprime(mersenne(3221)) = false in 2.3 s

Wenn Du Primaliät nachweisen willst, kannst Du Marcels Primo runterladen, allerdings rechnet das wie gesagt sehr, sehr lange.


Gruß Gammatester

monta 23. Sep 2008 22:43

Re: Größte Zahlenklasse
 
ggf. je nach Anwendung auch:

GNURZ: Arithmetik zum Umgang mit (G)roßen (N)atürlichen (U)nd (R)ationalen (Z)ahlen
http://www.lazarusforum.de/viewtopic.php?f=29&t=2015

STS301 24. Sep 2008 11:48

Re: Größte Zahlenklasse
 
@gammatester:

Die Demo funktioniert bei mir nicht, er meint dauernt, es fehlt ihm eine .dcu.

@Marcels Primo: ich würde es gerne seöbst Programmieren, daher meine Frage.

@monta: dich gibt es hier auch ;)

nur leider kann ich damit maximal 19. Stellige Zahlen bearbeiten.

gammatester 24. Sep 2008 17:27

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
@gammatester:

Die Demo funktioniert bei mir nicht, er meint dauernt, es fehlt ihm eine .dcu.

Wenn Du noch verräts welche, kann ich Dir weiterhelfen! Vielleicht HRTimer?. Dann lade das Util-Archiv runter (kann eh nicht schaden).

Gruß Gammatester

STS301 24. Sep 2008 19:26

Re: Größte Zahlenklasse
 
mp_types.dcu

obwohl die .pas Datei existiert

ich schaue mir das Ganze morgen genauer an.

monta 24. Sep 2008 23:32

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
@monta: dich gibt es hier auch ;)

nur leider kann ich damit maximal 19. Stellige Zahlen bearbeiten.

man trifft sich wieder ;)

Du kannst damit beliebig große Zahlen verarbeiten, die 19-Stellengrenze von qword wird damit ja gerade aufgehoben:
Zitat:

GNURZ stellt alle zum Umgang mit beliebig großen natürlichen und (positiven) rationalen Zahlen notwendigen Funktionen und Grundoperationen bereit.

Dax 24. Sep 2008 23:35

Re: Größte Zahlenklasse
 
Wenn es kein Problem für dich wäre, dein Programm unter C# oder einer anderen Mono-kompatiblen Sprache zu schreiben, könnte ich dich auch mit einem libgmp-Wrapper versorgen ;)

STS301 25. Sep 2008 12:16

Re: Größte Zahlenklasse
 
ich versuche jetzt nebenbei C++ zu lernen, aber wird wahrscheinlich noch ein bischen dauern, danke an alle

Klaus01 25. Sep 2008 12:31

Re: Größte Zahlenklasse
 
Zitat:

Zitat von Dax
Wenn es kein Problem für dich wäre, dein Programm unter C# oder einer anderen Mono-kompatiblen Sprache zu schreiben, könnte ich dich auch mit einem libgmp-Wrapper versorgen ;)

Zitat:

Zitat von STS301
ich versuche jetzt nebenbei C++ zu lernen, aber wird wahrscheinlich noch ein bischen dauern, danke an alle

C# != C++

Grüße
Klaus

Torpedo 25. Sep 2008 12:32

Re: Größte Zahlenklasse
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von Dax
Wenn es kein Problem für dich wäre, dein Programm unter C# oder einer anderen Mono-kompatiblen Sprache zu schreiben, könnte ich dich auch mit einem libgmp-Wrapper versorgen ;)

Zitat:

Zitat von STS301
ich versuche jetzt nebenbei C++ zu lernen, aber wird wahrscheinlich noch ein bischen dauern, danke an alle

C# != C++

Grüße
Klaus

Zitat:

Zitat von Dax
Schnapp dir doch einfach C/++ und libgmp ;) Aber dafür gibt es sicher auch Lazarus-Bindings... Zur Not bastelst du selbst ein kleines mit allen Funktionen, die du brauchst, zusammen.

;)

Fab92 25. Sep 2008 12:35

Re: Größte Zahlenklasse
 
Nur mal so aus interresse - wofür brauchst du das?
Vielleicht für die im Moment laufende Matheolympiade?
Naja kann ja sein ;

MFG
Fab
;)

STS301 25. Sep 2008 14:28

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
ich bin einer der Leute die der Primzahlensuchvirus angesteckt hat.

ich glaube das erklährt alles, auch wenn es mir bestimmt nicht gelingen wird eine neue zu finden ;)

@torpedo: lesen bildet ;), außerdem ist C++ eine weiterentwickelte Version von C#, also dürfte das nicht den Auschlag geben ;)

Fab92 25. Sep 2008 14:38

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
Zitat:

Zitat von STS301
ich bin einer der Leute die der Primzahlensuchvirus angesteckt hat.

ich glaube das erklährt alles, auch wenn es mir bestimmt nicht gelingen wird eine neue zu finden ;)

@torpedo: lesen bildet ;), außerdem ist C++ eine weiterentwickelte Version von C#, also dürfte das nicht den Auschlag geben ;)

C++ ist keine Weiterentwicklung von C#.
C# ist ein "C-Dialekt" der Firma Microsoft.
Sie ist Teils an Java und Teils an C++ angelehnt ;)
Nur so als kleine Info ;)
Für mehr Infos verweise ich mal auf Wikipedia :D

MFG
Fab
;)

grenzgaenger 25. Sep 2008 14:42

Re: Größte Zahlenklasse
 
Zitat:

Zitat von Fab92
Zitat:

Zitat von STS301
Zitat:

Zitat von STS301
ich bin einer der Leute die der Primzahlensuchvirus angesteckt hat.

ich glaube das erklährt alles, auch wenn es mir bestimmt nicht gelingen wird eine neue zu finden ;)

@torpedo: lesen bildet ;), außerdem ist C++ eine weiterentwickelte Version von C#, also dürfte das nicht den Auschlag geben ;)

C++ ist keine Weiterentwicklung von C#.
C# ist ein "C-Dialekt" der Firma Microsoft.
Sie ist Teils an Java und Teils an C++ angelehnt ;)
Nur so als kleine Info ;)
Für mehr Infos verweise ich mal auf Wikipedia :D

MFG
Fab
;)

nö, c# ist kein C/C++ dialekt. es ist eine neue sprache, welche einen intermedied code für das .NET framework erzeugt, während C/C++ einen nativen output erzeugen. was c# mit java gemeinsam hat, ist, dass beide interpretiert werden, aber java plattformunabhänig ist.. also nicht die 3G sprachen mit den interpreativen verwechseln ...

Dax 25. Sep 2008 14:51

Re: Größte Zahlenklasse
 
Zitat:

Zitat von grenzgaenger
was c# mit java gemeinsam hat, ist, dass beide interpretiert werden, aber java plattformunabhänig ist.. also nicht die 3G sprachen mit den interpreativen verwechseln ...

Schon wieder hauptsächlich falsch... C# und Java werden in der Regel _nicht_ intepretiert, sondern von der .NET/Java-Runtime (wie gerade passend) in nativen Code übersetzt, sobald nötig. In C# oder anderen CLI-Sprachen geschriebene Programme sind auch plattformunabhängig (http://www.mono-proect.com), wenn sie keine P/Invokes nutzen - und selbst wenn sie es tun, können sie immer noch unabhängig sein (ich habe ein perfektes Beispiel dafür auf meinem Rechner). ;)

grenzgaenger 25. Sep 2008 14:59

Re: Größte Zahlenklasse
 
theoretisch magst du recht haben, dass .NET plattformunabhängig ist, praktisch ist es jedoch an Windows gebunden.

ansonsten wie du bereits erwähnt hast, lässt sich der intermediate code von java/.NET nicht direkt ausführen. aber das hat ja nicht nur nachteile. ansonsten OT, und jetzt schluss mit dem thema.

Fab92 25. Sep 2008 15:25

Re: Größte Zahlenklasse
 
Ich habe das C-Dialekt extra in ""-Zeichen gesetzt.
;)
Mit der neune Sprache hast du vollkommen recht. ;)

Ich habe diese sehr mehrdeutige Wortwahl aber deshalb benutzt, da C# sehr stark an C++ erinnert. Man hat das ganze ja nicht umsonst !!!C!!!# genannt ;)
Aber ihr habt natürlich recht.
Sorry ;)

MFG
Fab
;)

gammatester 25. Sep 2008 23:32

Re: Größte Zahlenklasse
 
Zitat:

Zitat von STS301
auch wenn es mir bestimmt nicht gelingen wird eine neue zu finden ;)

Eine neue Primzahl zu entdecken ist doch völlig easy: Hier ein Beispiel in weniger als einer viertel Sekunde mit meinem Democalculator:

Code:
[D]:=> nextprime(random(10^100))
Result = 2632396436629883249650013553982945076965176231647985458096886656311394853857362897448045375179106333
Kann genauso schnell mit Primo verifiziert werden. Da es nach dem Primzahlsatz ca 10^100/100/ln(10)-10^99/99/ln(10) = 3.9E97 100-stellige Primzahlen gibt, wäre es ein irrer Zufall wenn Du schon ein bekannte erwischt. Allerdings ist diese jetzt vergeben :)

Viel interessanter ist folgendes: Angenommen Primo stellt fest, daß eine so erzeugte Zahl (eine sogenannte BPSW-Pseudoprimzahl) nicht wirklich prim ist. Dann gibt es drei Möglichkeiten

1. Mein Programm hat sich verrechnet. Das ist schlecht, aber ich kann wieder einen Bug suchen und vernichten.

2. Primo hat sich verrechnet. Dann gilt das aus 1. für Marcel Martin.

3. Du hast ein Beispiel für eine BPSW-Pseudoprimzahl gefunden, die nicht prim. Das kannst veröffentlichen und wirst weltberühmt (zumindest in bestimmten Kreisen). Auf jeden Fall ist das besser als die nächst größere bekannte Primzahl zu finden.


Gruß Gammatester


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 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