La bibliothèque BigInt (basée sur LargeInt de S. J. Schaper) permet de réaliser des calculs sur de grands nombres entiers.
La fonction BigInit(n%) initialise la bibliothèque. Le paramètre n représente le nombre d'entiers que l'on veut utiliser. La fonction retourne le nombre de chiffres maximum de chaque entier.
P. ex. l'instruction :
p = BigInit(100)
permet de réserver 100 entiers pouvant avoir jusqu'à p = 4176 chiffres chacun.
Le nombre maximal de chiffres pour un seul entier, soit BigInit(1), est d'environ 73000.
Les entiers sont stockés dans un tableau. On accède à chaque entier par le biais de son indice qui peut aller de 0 à n - 1.
Dans la suite, nous désignerons par (i) l'entier d'indice i.
Pour affecter une valeur à un grand entier on dispose de 3 procédures :
SetNum i%, n% : affecte à l'entier (i) la valeur de n (entier 32 bits)
SetNum 0, 123456789SetStr i%, a$ : affecte à l'entier (i) le nombre représenté par la chaîne de caractères a. On peut utiliser un nombre hexadécimal à condition de le préfixer par &H ou &h
SetStr 1, "12345678901234567890"
SetStr 2, "&h123456789ABCDEF"SetRnd i%, n% : affecte à l'entier (i) un nombre aléatoire de (exactement) n bits allant de 2^(n - 1) à (2^n - 1)
SetRnd 3, 128La fonction GetStr(i%) retourne la valeur décimale de l'entier (i) dans une chaîne de caractères.
BigDup i%, j% : Copie (i) dans (j)
BigSwap i%, j% : Echange (i) et (j)
BigCmp(i%, j%) : Compare (i) et (j)
Retourne -1 si (i) < (j), 0 si (i) = (j), 1 si (i) > (j)
BigIsf(i%, n%) : Retourne -1 si (i) = n, 0 sinon.
n est un entier de 16 bits (-32768 à 32767)
BigInc i%, n% : Augmente (i) de n, où n est un entier de 16 bits
BigAdd i%, j%, k% : Somme (i) + (j). Résultat dans (k)
BigSub i%, j%, k% : Différence (i) - (j). Résultat dans (k)
BigMul i%, j%, k% : Produit (i) * (j). Résultat dans (k)
BigDiv i%, j%, k%, m% : Division entière de (i) par (j). Place le quotient dans (k) et le reste dans (m)
BigRat(i%, j%, n%) : Approximation décimale du rapport (i) / (j). Résultat sous forme de chaîne de caractères.
BigChs i% : Change le signe de (i)
BigSqr i%, k% : (i) au carré. Résultat dans (k)
BigSqrt(i%, k%) : Si (i) est un carré parfait, retourne 0 et la racine carrée de (i) dans (k) sinon retourne -1.
BigPow i%, n%, k% : (i) à la puissance n. Résultat dans (k). n est un entier positif de 32 bits
BigFact n%, k% : Factorielle de n. Résultat dans (k). n est un entier positif pouvant aller jusqu'à environ 19000 si l'on a réservé un seul entier, soit BigInit(1).
BigShl i%, n%, k% : (i) est décalé de n bits vers la gauche. Ceci correspond à une multiplication par 2^n. Résultat dans (k)
BigShr i%, n%, k% : (i) est décalé de n bits vers la droite. Ceci correspond à une division par 2^n. Résultat dans (k)
BigGCD i%, j%, k% : Plus grand commun diviseur de (i) et (j). Résultat dans (k)
BigLCM i%, j%, k% : Plus petit commun multiple de (i) et (j). Résultat dans (k)
BigPrimList(nmin%, nmax%) : Crée une liste des nombres premiers compris entre nmin et nmax dans le fichier texte PrimList.txt. Retourne le nombre de nombres premiers.
BigPrimDec(i%) : Décompose (i) en produit de facteurs premiers. Résultat sous forme de chaîne de caractères, p. ex. "2^2 * 3^3 * 5^4". Les facteurs non identifiés sont représentés par "(?)".
Cette fonction utilise les entiers (0) à (3). Il faut donc réserver au moins 5 entiers avec BigInit.
BigPrimNext(i%) : Remplace (i) par le nombre premier immédiatement supérieur ou égal, selon le test probabiliste de Miller-Rabin. Retourne 1 si premier, -1 si probablement premier.
Cette fonction utilise l'entier (0). Il faut donc réserver au moins 2 entiers avec BigInit.