Calcul du modulo de grands nombres en JAVA

Résolu/Fermé
newbie388 Messages postés 3 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 10 mars 2012 - 10 mars 2012 à 12:41
newbie388 Messages postés 3 Date d'inscription samedi 10 mars 2012 Statut Membre Dernière intervention 10 mars 2012 - 10 mars 2012 à 14:06
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 jeudi 22 janvier 2009 Statut Membre Dernière intervention 21 mai 2016 1 101
10 mars 2012 à 12:52
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 samedi 10 mars 2012 Statut Membre Dernière intervention 10 mars 2012
10 mars 2012 à 14:06
Merci pour ton aide. Finalement comme tu le verras ci-dessous la réponse est donnée par KX.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 10/03/2012 à 13:05
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 samedi 10 mars 2012 Statut Membre Dernière intervention 10 mars 2012
10 mars 2012 à 14:05
Merci pour ta réponse.

Le résultat retourné est correct !
0