J'ai un code j'ava qui calcule ma formule sur les nombres premiers;
l’accès au élément du tableau k me fait tourner en rond mais sans faire des commentaires, voici le code :
package Premier;
import java.util.*;
public class Premier {
public static void main(String[] args) {
Premier P1 = new Premier();
@SuppressWarnings("resource")
Scanner keby = new Scanner(System.in);
int s=0;
System.out.println("Veuillez saisir un rang n :");
s=keby.nextInt();
System.out.printf("P : %d \n", +P1.Formule2(s));
}
public int Div1 (int n) {
int i =2;
int d=n-1 ;
int div=1;
while ((i<d) && ((n) % (i) != 0)) {
if ((n) % (i) ==0) {
div = i ;
}
i =i+1 ;
}
if ((n) % (i) ==0) {
div = i ;
}
return div;
}
public int Formule2 (int n){
int i=0;
int r=0;
int control = 2 * n + 1 ;
int Q = Div1(2 * n + 1);
int b = Q;
int sortie = 0;
ArrayList<Integer> K= new ArrayList<Integer> ();
K.add(control);
while ((Q!=1) && (sortie == 0)) {
b = Q ;
Q = Div1(2 * n + Q);
control=2 * n + Q;
r=K.size();
while ((i<r) && (control != K.get(i) )) {
i=i+1;
}
/*System.out.printf("element : %d \n", + K.get(i));*/
if (control== K.get(i) ) {
sortie = sortie + 1;
} else{
K.add(2 * n + Q);
}
}
if ((Q!=1) && (sortie == 1) ){
return 0;
}
else {
return (2 * n + b);
}
}
voici le code d'erreur:
Veuillez saisir un rang n :
16
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
package Premier;
import java.util.*;
public class Premier {
public static void main(String[] args) {
Premier P1 = new Premier();
@SuppressWarnings("resource")
Scanner keby = new Scanner(System.in);
long s=0;
System.out.println("Veuillez saisir un rang n :");
s=keby.nextInt();
System.out.printf("P : %d \n", +P1.Formule2(s));
}
public long Div1 (long n) {
long i =2;
long d=n-1 ;
long div=1;
while ((i<d) && ((n) % (i) != 0)) {
if ((n) % (i) ==0) {
div = i ;
}
i =i+1 ;
}
if ((n) % (i) ==0) {
div = i ;
}
return div;
}
public long Formule2 (long n){
int i=0;
long r=0;
long control = 2 * n + 1 ;
long Q = Div1(2 * n + 1);
long b = Q;
long sortie = 0;
ArrayList<Long> K= new ArrayList<Long> ();
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 == 1) ){
return 0;
}
else {
return (2 * n + b);
}
}
}
Erreur d’exécution du code
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.