Voici ou j'en suis arrivé avec mes algo :
Pour le mod Pow :
SI BIExpo = 0 then return 1
SI BIExpo = 1 then return BIValue
Sinon
BIValue, BIExpo, BIMod As BigInt
pow, powTmp as ULong = 1
BIResult As BigInt = 1
BITmp As BigInt
BITmp = BIValue * BIValue
powTmp = 2
TANT QUE BIExpo - pow > 1 FAIRE
TANT QUE pow + 2*powTmp <= BIExpo FAIRE
BITmp = BITmp * BITmp
BITmp = BITmp mod BIMod
powTmp = powTmp *2
FIN TANT QUE
BIResult = BIResult * BITmp
BIResult = BIResult mod BIMod
pow = pow + powTmp
BITmp = BIValue
powTmp = 1
FIN TANT QUE
SI BIExpo - pow = 1 FAIRE
BIResult = BIResult * BIValue
BIResult = BIResult mod BIMod
Return BIResult[/INDENT]
Voila ce que donne mon algo pour le modPow, cela a un nom?
Sinon pour la divison entiére, c'est là que j'ai mon problème, je ne vois pas du tout comment faire, mis à part le fait de prendre des valeurs consécutifs dans mon Dividende
faire une itération de 1 a 9 pour teste Diviseur * it < Dividende.
Et ainsi calculer le résultat.
Mais ceci est, je pense, beaucoup trop lourd niveau machine. Et je n'arrive pas à trouver quelques choses de correct.
Partager