Bonjour!
J'ai toujours un problème d’exécution du code de calcule de nombre premier;
j'ai changé le type long en double mais ça ne fonctionne pas alors que pour 19 chiffres quand je remet le long tout est Ok;
voici le code:
Merci d'avance;Code:package Premier4; import java.util.*; public class Premier4 { public static void main(String[] args) { Premier4 P1 = new Premier4(); @SuppressWarnings("resource") Scanner keby = new Scanner(System.in); System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :"); double s=keby.nextDouble(); double m=keby.nextDouble(); for (double x = s ; x <= m; x++) { System.out.printf("P%d : %d \n",+x, +P1.Formule2(x)); } } public long Div1 (double n) { int step; int i; if ( n < 5 ) { if ((n==2) || ( n==3)) { return 1; } else { return 2; } } else if (( n%6==0) || (n%6==2) || (n%6==4 )) { return 2; } else if (n%6==3) { return 3; } else { i=5; step=2; while ( i*i <= n ) { if (n%i==0) { return i; } else { i=i+ step; if ( step==2) { step= 4; } else { step=2; } } } return 1; } } public double Formule2 (double n){ double p=0; loop1: for(double j=n;j<=2*n;j++) { n=j; int i=0; double r=0; double control = 2 * n + 1 ; double Q = Div1(2 * n + 1); double b = Q; long sortie = 0; ArrayList<Double> K= new ArrayList<Double> (); K.add(control); while ((Q!=1) && (sortie == 0)) { b = Q ; control=2 * n + Q; Q = Div1(2 * n + Q); r=K.size(); while (i<r) { if (control== K.get(i) ) { sortie = sortie + 1; } i=i+1; } K.add(2 * n + Q); } if ((Q==1) && (sortie == 0) ){ p=2 * n + b; break loop1; } } return p; } }
-----