Page 1 sur 1

Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 13:18
par Ar-S
Bonjour,
Je me suis replongé dans les contests online.
Pour l'un d'eux, je dois trouver les modulos de très grands nombres.

Ex : 500000^180351 divisé par 30931

J'essaye donc en ecrivant

Code : Tout sélectionner

r.f = Mod (Pow (500000.0,180651.0), 30931)
Mais j'obtiens NaN

Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 13:40
par Marc56
Déjà si tu fais ça:

Code : Tout sélectionner

Debug Pow (500000.0,180651.0)
Tu obtiens ça:

Code : Tout sélectionner

+Infinity
https://www.purebasic.com/french/docume ... inity.html

Donc pour la suite, ç'est NaN
https://www.purebasic.com/french/docume ... h/nan.html

Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 13:49
par Ar-S
Oui... mais peut on resoudre ce soucis en PB ?
On peut en python, C, php, javascript..

Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 14:33
par zaphod_b
Salut,

Pour calculer le modulo de très grands nombres :

Code : Tout sélectionner

Procedure emod(n.s,modulo)
  Protected lrv=1,rez
  n=ReverseString(n)
  ;
  For i=0 To Len(n)-1
    If i>0
    lrv=(lrv*10)%modulo  
    EndIf
    rez+lrv*Val(Mid(n,i+1,1))
  Next
  rez=rez%modulo
  ProcedureReturn rez  
EndProcedure

Debug 12346789%97
Debug emod("12346789",97)
Debug emod("123123456487897456123122348987456456789456",97)


Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 15:29
par Guillot
chapeau !

t'en a beaucoup des codes dans le genre ?

Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 19:23
par Shadow
Pas mal 8O
Se qui manque à Pure Basic, c'est une lib pour calculer sur de très grand nombre.

zaphod_b, si jamais tu ne sais pas quoi faire, vue que t'es plutôt bon on dirait ^^

Re: Trouver le modulo d'un grand nombre

Publié : ven. 09/sept./2016 21:07
par Zorro