En 1995 Bailey, Borwein et Plouffe ont montré la relation suivante :
π=
n
X
j=0
1
16k4
8j+ 1
−
2
8j+ 4
−
1
8j+ 5
−
1
8j+ 6
Voici le un programme séquentiel :
import java . math .*;
public class Calc ulD ePI {
public String calcul (int nbDe cima l ){
Big Decima l somme = Bi gDecim al . ZERO ;
for ( int j =0; j < nbDe cimal ; j ++) {
Big Decim al part1 = new BigD ecima l (4. 0/(8* j +1) ) ;
Big Decim al part2 = new BigD ecima l (2. 0/(8* j +4) ) ;
Big Decim al part3 = new BigD ecima l (1. 0/(8* j +5) ) ;
Big Decim al part4 = new BigD ecima l (1. 0/(8* j +6) ) ;
Big Integ er part5 = B igInt eger . valu eOf (16) . pow ( j) ;
part1 = part1 . subt ra ct ( part2 );
part1 = part1 . subt ra ct ( part3 );
part1 = part1 . subt ra ct ( part4 );
part1 = part1 . divide ( new BigDecim al ( part5 )) ;
somme = somme . add ( part1 );
}
// On ne retourn e que les d ecim ales dem ande es car le reste
est faux
BigD eci mal nbd = new BigDecima l (10.0) . pow ( nbDe cima l );
// On mul tipl ie par 10^ nbdecimal
somme = s omme . mu ltiply ( nbd ) ;
// On prends la partie entiere
Bi gInt eger t em pS om me = somme . t oBi gIn tege r () ;
return (( new BigD ecimal ( t empSo mme ) . divide ( nbd ) ). to String
() );
}
public static void main ( String args []) {
if ( args . leng th ==0) {
System . out . println (" Syntaxe : java Calcu lDePI ####") ;
System . out . prin tl n ("#### r epres ente le nom de de cimal
de PI ") ;
}
else {
Ca lcul DePI cdpi = new Cal culD ePI () ;
for ( int i =1; i < I nteger . par seInt ( args [0]) ; i ++)
System . out . prin tl n ( cdpi . cal cu l (i )) ;
}
}
}
C.1 Utilisez Java RMI pour distribuer le calcul entre plusieurs ordinateurs.
D Déchiffrage distribué (Exercice optionnel)
Une fonction de hashage cryptographique a pour but de calculer la hashé d’un mot ou d’une
donnée relativement facilement maisil est très difficile de retrouver la donnée initiale. La façon la
2