Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mi 28.03.07 19:53 
ich möchte INT64 Primzahlen berechnen...
optimiert habe ich meine routine mit der Wurzelfunktion als abbruch...aber das geht ja nicht bei ner int64...
wie mach ich das?

BTW: wie kann ich größere zahlen verwenden (512Bit z.B.)?
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Fr 30.03.07 07:13 

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1336
Erhaltene Danke: 119

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 30.03.07 08:36 
Primzahlen sind zwar immer noch etwas feines, weil etwas, was noch nicht vollständig verstanden ist. Und es dafür wohl nie eine allgemein gültige Formel geben wird. Auch ich habe auf die Berechnung und Analyse auch schon viele Stunden verschwendet, und auch schon ganz interessante Zusammenhänge gefunden um die Berechnung zu beschleunigen. (leider waren schon alle bekannt)
Aber, wenn du wirklich Primzahlen berechnen willst, dann verschwende deine Rechnerzeit nicht mit deinen eigenen Versuchen. Sondern werde Mitglied bei einem der Zahlreichen DC (Distributed Computing) Projekt zur Primzahlberechnung.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Fr 30.03.07 15:08 
es geht mir mehr um die großen zahlen...
ok...die unit habe ich...wie benutz ich die? =(


is schwer und ne dokumentiert...oder ich finds ne
konbom
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 36

Win XP Home
Delphi 2005 Personal
BeitragVerfasst: Fr 30.03.07 15:44 
Ums mit int64 zu macvhen:

Prüf doch einfach anstatt:
ausblenden Delphi-Quelltext
1:
if Zahl1 <= sqrt(Zahl2) then					

ausblenden Delphi-Quelltext
1:
if Zahl1*Zahl1 <= Zahl2 then					


Müsste doch genauso funktionieren, oder nicht?
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Sa 31.03.07 12:09 
ne keine gute idee...ich machs z.zt. so:
bis:=sqrt(zahl)

while(i<bis)....

wenn ich in jeder schleife das produkt berechnen müsste würde das viel länger dauern...


also Frage nochmal: die bignum2 unit ist klasse und super geeignet...aber ich muss eben wissen wie ich die verwende (+/-/*/durch/mod/sqrt/exp) und die initalisierung eben...

ma jmd nen einfaches bsp? wär super nett
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: So 01.04.07 07:17 
das kannst du alles hier im topic lesen, oder du guckst dir einfach mal die unit an:

www.delphi-forum.de/...mp;highlight=bignum2

(beitrag von BenBE)

mfg
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 03.04.07 10:30 
eigendlich ganz gut...aber es fehlt trotzdem ne doku...
was ist der unterschied von BM_CompareZ und BM_CompareNC?
und gibts keine andre möglichkeit, ne bignum zuzweisen als
"BMD_StrToBigNum ('2', False);" ? kann man auch nen integer zuweisen?
und was ist der unterschied von dem:
ausblenden Delphi-Quelltext
1:
2:
        Procedure Add(Summand2: TBigNumber); Overload;
        Procedure Add(Summand2: TSJBigNumber); Overload;


und gibt es ne neuere (vll optimierte) version als die vom 20.04.2005?

wäre ganz nett...Forumsuche Google ist klar...aber nix gefunden
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 03.04.07 23:31 
Zwecks optimierter Fassung soltest Du mal in der im Pi-Berechnungs-Thread verlinkten Fassung schauen, die müsste aktueller sein. Ansonsten mich nochmal kurz per PN anschreiben, dann schau ich mal ...

Ach ja, zum Unterschied zwischen den beiden Compare-Methoden:

Compare If Zero und Compare if Not Carry. die Bezeichnungen lähnen sich an die Programmierung mit ASM an:
Die Z-Methode prüft auf Gleichheit (A-B = 0) und die NC-Methode prüft auf Größer gleich (A - B >= 0). Wie man damit alle anderen Vergleichsoperatoren nachbaut, sollte klar sein.

Zum Unterschied zwischen TSJBigNum und TBigNum: Die Klasse TSJBigNum ist ein OOP-Wrapper um meine ursprüngliche prozedurale Klasse. Für konkrete Fragen einfach mal ne PN an mich, da führ ich die Details noch mal genauer aus. Du kannst beliebige Zahlen auch Problemlos selber zuweisen, indem Du einfach die Record-Struktur initialisierst UND dann das Daten-Array so füllst, wie es im Stellenwert-System zur Basis 256 der Fall ist:

Der Integer $12345678 muss also im Array so eingetragen sein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
BitNum[0] := $78;
BitNum[1] := $56;
BitNum[2] := $34;
BitNum[3] := $12;


HTH.

MfG,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.