AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Exponentieren und dann Modulo: große Zahlen
Thema durchsuchen
Ansicht
Themen-Optionen

Exponentieren und dann Modulo: große Zahlen

Ein Thema von tuxianer · begonnen am 16. Mai 2008 · letzter Beitrag vom 31. Mai 2008
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
tuxianer

Registriert seit: 16. Mai 2008
25 Beiträge
 
#1

Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:25
Hallo,
ich habe jetzt den Code implementiert:

Delphi-Quellcode:
function tform1.mod_exp(basis,exponent,modulo:integer):int64;
var e:Integer;
begin
  e:=1;
  while (exponent>0) do begin
    if (exponent mod 2 > 0) then e:=(e*basis) mod modulo;
    basis:=(basis*basis) mod modulo;
    exponent:=exponent div 2;
  end;
  result:=e;
end;
Bei Größeren Zahlen kommt aber mist raus z.B.

666^58613 mod 81079=-38808

Rauskommen müsste aber: 49371.

Woran kann das liegen? Mit kleineren Zahlen gehts 1a!
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:30
Ich denke, 666^58613 sprengt sogar den Anwendungsbereich von Int64. Nimm einfach mal den Windows Rechner. Int64 hat 64 Bit, kommt also bis 2^64. Das kann der Rechner noch anzeigen. Bei deiner Rechnung kommt selbst der Windows-Rechner nicht mehr mit. Es gibt also einen Owerflow.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
tuxianer

Registriert seit: 16. Mai 2008
25 Beiträge
 
#3

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:31
das hab ich mir auch schon überlegt. aber dann gibts ja keine größeren ganzzahl typen. Wie kann ich mir da selbst welche erstellen? Aber eigentlich exponentiert das doch schrittweise. das Ergebnis ist ja nicht groß.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:32
Es gibt eine Unit mit dem Zahlentyp BigInt. Einfach mal danach suchen. Ob die allerdings mit solch großen Zahlen zurechtkommt, weiß ich nicht.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:36
Ich nehm an du hast das mal per Hand ausgerechnet? Dann lass dir doch in jedem Schritt die Werte deiner Variablen ausgeben. Daraus kannst du ablesen, ob deine Funktion ein generelles Problem hat oder in einem der Schritte "kippt".
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:41
Zitat von mquadrat:
Ich nehm an du hast das mal per Hand ausgerechnet?
Ganz sicherlich nicht 666^58613... Das sähe so aus: 666x666x666x666x666x666.... und das 58613 mal!
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#7

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:42
schalte doch einfach mal die Überlaufprüfung ein,

{$Q+} or {$OVERFLOWCHECKS ON}

dann bekommst du eine Meldung bei Überscheitung der Wertebereiche.


ansonsten bleibt dir nur der Werg über sowas wie BigInt.


Hier im Forum suchenTBigInt und auch im DEC ist 'ne Bibo für große Zahlen drin Hier im Forum suchenDEC-Math
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:43
Zitat von Fussball-Robby:
Zitat von mquadrat:
Ich nehm an du hast das mal per Hand ausgerechnet?
Ganz sicherlich nicht 666^58613... Das sähe so aus: 666x666x666x666x666x666.... und das 58613 mal!
Ja und? Wofür hat man denn in der Grunschule schriftliches multiplizieren gelernt?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 17:44
Zitat von Fussball-Robby:
Ganz sicherlich nicht 666^58613... Das sähe so aus: 666x666x666x666x666x666.... und das 58613 mal!
Lies dir doch mal den Algorithmus in der Frage durch... Nennt sich schnelles Exponenzieren. Das mussten wir in der Kryptographie-Klausur mit einem simplen Taschenrechner machen Er kann ja auch andere Zahlen nehmen. Es geht nur drum, ob seine Implementierung prinzipiell richtig ist und nur bei "bestimmten" Zahlen Mist rechnet, oder ob sie komplett falsch ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
 
Delphi 12 Athens
 
#10

Re: Exponentieren und dann Modulo: große Zahlen

  Alt 16. Mai 2008, 18:05
ist dir übrigens schon aufgefallen, daß e nur ein Integer ist, also ist Result (Result:=e) auch nur ein Integer
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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