Calcul du modulo de grands nombres en JAVA
Résolu
newbie388
Messages postés
3
Statut
Membre
-
newbie388 Messages postés 3 Statut Membre -
newbie388 Messages postés 3 Statut Membre -
Bonjour,
Afin de calculer le modulo de deux nombres entiers relatifs en JAVA, l'algo ci-dessous fonctionne correctement ;
Exemple1 : -1mod(3)
Or dans mon calcul, la valeur de "a" est issue du calcul d'une puissance.
Par exemple :
La valeur retournée est : 1.338135429932101E203
Afin que mon algo de l'exemple1 puisse prendre en compte cette valeur, soit 1.338135429932101E203, il faut que je puisse obtenir sa représentation sans virgule.
Par exemple pour la valeur 2.3E2 je souhaiterais obtenir 230.
Si vous avez la réponse ou un algo différent à me proposer pour résoudre ce problème, je suis bien entendu preneur. ;)
Merci d'avance. :)
<config>Linux /
Afin de calculer le modulo de deux nombres entiers relatifs en JAVA, l'algo ci-dessous fonctionne correctement ;
Exemple1 : -1mod(3)
int a = -1; int b = 3; BigInteger b1 = new BigInteger(String.valueOf(a)); BigInteger b3 = new BigInteger(String.valueOf(b)); int mod = b1.mod(b3).intValue(); System.out.println(mod);
Or dans mon calcul, la valeur de "a" est issue du calcul d'une puissance.
Par exemple :
double puissance = Math.pow(726,71);
System.out.println("puiss="+puissance);
La valeur retournée est : 1.338135429932101E203
Afin que mon algo de l'exemple1 puisse prendre en compte cette valeur, soit 1.338135429932101E203, il faut que je puisse obtenir sa représentation sans virgule.
Par exemple pour la valeur 2.3E2 je souhaiterais obtenir 230.
Si vous avez la réponse ou un algo différent à me proposer pour résoudre ce problème, je suis bien entendu preneur. ;)
Merci d'avance. :)
<config>Linux /
2 réponses
-
Tout d'abord, saches que je ne connais pas le JAVA, excuse moi donc si je te fais perdre ton temps.
En php, certaines fonctions sont limitées en taille, est tu sur que ton nombre n'est tout simplement pas trop grand pour JAVA ?
as tu essayédouble puissance = int(Math.pow(726,71));
?double puissance = float(Math.pow(726,71));
?
existe il une fonction "round()" ? si oui, tu peux toujours essayer -
J'ai un peu du mal à suivre toutes les manipulations que tu fais pour quelque chose qui est finalement assez direct avec modPow
Calcul de 726^71 modulo 3 :
BigInteger mod = BigInteger.valueOf(726).modPow(BigInteger.valueOf(71), BigInteger.valueOf(3));
La confiance n'exclut pas le contrôle