Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modulo sur nombre à x chiffres significatifs

4 réponses
Avatar
JBT
L'un d'entre vous aurait-il une fonction pour calculer un modulo sur un
nombre ayant un nombre x de chiffres significatifs (x suffisament grand
pour ne pas tenir dans un entier ou un réél) ?

Merci d'avance.

--
forumnewswindev@ifrance.com

4 réponses

Avatar
farplus
JBT avait prétendu :
L'un d'entre vous aurait-il une fonction pour calculer un modulo sur un
nombre ayant un nombre x de chiffres significatifs (x suffisament grand pour
ne pas tenir dans un entier ou un réél) ?

Merci d'avance.



utilise des monetaires... ou c'est encore plus grand ?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
adrien
Jour...

Tu s'rais pas en train de calculer un clé rib par hasard ?
si c'est ça, y a un super champ clé rib avec tout le code qui va bien
dans c'qui z'appele le kougloff.

A+
Adrien.

JBT a couché sur son écran :
L'un d'entre vous aurait-il une fonction pour calculer un modulo sur un
nombre ayant un nombre x de chiffres significatifs (x suffisament grand pour
ne pas tenir dans un entier ou un réél) ?

Merci d'avance.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Avatar
Romain PETIT
JBT a utilisé son clavier pour écrire :
L'un d'entre vous aurait-il une fonction pour calculer un modulo sur un
nombre ayant un nombre x de chiffres significatifs (x suffisament grand pour
ne pas tenir dans un entier ou un réél) ?



Question hyperclassique (effectivement posée par ceux qui veulent
vérifier la validité d'une clé RIB ou pour faire du cryptage et qui se
heurtent aux capacités de leurs variables).

La solution prend quelques lignes et utilise les propriétés
mathématiques du modulo
http://membres.lycos.fr/villemingerard/Nombre/Modulo.htm

modulo((a*b), N) = modulo( modulo(a,N) * modulo(b,N) , N)
et
modulo((a+b), N) = modulo( modulo(a,N) + modulo(b,N) , N)

Le principe : au lieu de prendre le nombre en entier pour calculer le
modulo, on ajoute le résultat du modulo pour chaque multiple de 10
composant le nombre.

Par exemple, quel est le modulo de 125, 97 ?
On a 125 = 100 + 20 + 5

On aura donc :

Modulo(125, 97) = Modulo(100 + 20 + 5, 97)
= Modulo(Modulo(100,97)+Modulo(20,97)+Modulo(5,97)),97)

Que l'on peut astucieusement implémenter dans un algorithme simple :

sNombreTresLong est une chaine = "12345678901234567890"
eClé est un entier
c est un entier
eModulo est un entier = 97
eClé = 0
POUR c=1 A Taille(sNombreTresLong)
eReste = (eClé * 10) + val(sNombreTresLong[[c]])
eClé = Modulo(eReste, eModulo)
FIN

si au final eClé = 0, alors c'est que le modulo du grand nombre est
également égal à 0 (donc que la clé RIB est bonne si c'est ce qu'on
cherchait à vérifier).

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
JBT
JBT a pensé très fort :
L'un d'entre vous aurait-il une fonction pour calculer un modulo sur un
nombre ayant un nombre x de chiffres significatifs (x suffisament grand pour
ne pas tenir dans un entier ou un réél) ?

Merci d'avance.



Merci à tous pour vos réponses. J'ai utilisé l'exemple du guide de
windev je n'avais pas pensé que le principe du rib était identique, et
donc pas trouvé le code déjà tout prêt fourni avec windev.

--