Calcul du modulo de grands nombres en JAVA

Résolu
newbie388 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
newbie388 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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 /
A voir également:

2 réponses

Templier Nocturne Messages postés 7734 Date d'inscription   Statut Membre Dernière intervention   1 106
 
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
0
newbie388 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton aide. Finalement comme tu le verras ci-dessous la réponse est donnée par KX.
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
0
newbie388 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse.

Le résultat retourné est correct !
0