Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

MOD unter BIGINT

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 12.12.2021, 08:27    Titel: MOD unter BIGINT Antworten mit Zitat

Hallo Mitglieder !

Ich möchte nochmal die Experten konsultieren.

Unter Verwendung der BIG_INT_Biblothek, bräuchte ich mal bitte
ein kleines Bsp-Programm, wie man A MOD B berechnen kann, wenn A den 64 Bit Bereich verlässt.

Bisher habe ich die Zahl als String zerlegt und mühsam wie eine schriftliche Division programmiert. (Also zerhackt in Blöcke, Multiplizieren und nächsten Block runterziehen usw)



Vielen Dank !
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 12.12.2021, 10:42    Titel: Antworten mit Zitat

bigint(i) ist in 'Big-Int overload.bi' für i als Long definiert.

Wenn man i als Ulong, Longint, oder Ulongint festlegt, werden große Zahlen als negativ interpretiert.

Besser ist es, die Zahl in einen String zu verwandeln: Str(i) oder bigint(Str(i)) anstelle von bigint(i).
Code:
#include "Big-Int overload.bi"

Operator Mod ( Byref lhs As bigint, Byref rhs As bigint ) As bigint
   Dim As bigint result
   big_int_mod(lhs.numptr, rhs.numptr, result.numptr)
   Return result
End Operator


Dim As Ulong i=4294967000
Print bigint(i)
Print Str(i)
Print bigint(Str(i))
Print

Dim As bigint a,b,r
a="1" & String(70,"0")
b="1" & String(50,"0")
Print a
Print b
Print

r=(a + bigint(i)) Mod b
Print r,"Fehler"

r=(a + Str(i)) Mod b
Print r

r=(a + bigint(Str(i))) Mod b
Print r

Sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 12.12.2021, 11:43    Titel: Antworten mit Zitat

Danke, schau ich mal an.

Prima !
Eingedampft

Code:

#include "Big-Int overload.bi"

Operator Mod ( Byref lhs As bigint, Byref rhs As bigint ) As bigint
   Dim As bigint result
   big_int_mod(lhs.numptr, rhs.numptr, result.numptr)
   Return result
End Operator

DIM AS STRING I

I="11117498174897189274891274981794798794178947198748190480185081905798198378911111111111111"

Dim As bigint b,r
b="279471927194981749871298414981724987981274891071723"

r=I Mod b

PRINT I;" MOD ";B;" = "; r


genügt und wurde extern RICHTIG bestätigt lächeln
r = 232459595565865651012239029684372070660743297922035
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
pzktupel



Anmeldungsdatum: 07.07.2020
Beiträge: 81

BeitragVerfasst am: 12.12.2021, 21:57    Titel: Nachtrag Antworten mit Zitat

Ich konnte diese Option gut in das mathematische Problem einbinden.
Das Resultat zu meinem Algorithmus dazu fiel bisher mager aus. neutral

Es ist kein einfaches Problem !
Verteile alle Primzahlen bis 257 als Teiler in einem Interval von 1890 derart, sodas so wenig wie möglich Zahlen vorkommen, die prim oder Teiler >257 haben. Bisher fiel diese Anzahl auf 80 herab.
_________________
Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.php
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz