Bonsoir;
je veux transformer le code de ma formule en int vers BigInteger mais l'accès du tableau ne passe pas encore chez moi;
Voici les lignes qui ont des problèmes:
Et voici le code complet:Code:// regarder dans les commentaire de chaque ligne pour comprendre ce que je veux faire BigInteger deux = new BigInteger("2"); BigInteger i = AV((deux.multiply(n)).mod(new BigInteger("30"))); // int i=AV[(2*n)%30]; BigInteger j = Div1((deux.multiply(n)).add(BigInteger.valueOf(i))); //int j=Div1(2*n+i); BigInteger form = (deux.multiply(n)).add(BigInteger.valueOf(i)).(deux.multiply(n)).add(BigInteger.valueOf(BigInteger.valueOf(j).sub(new BigInteger("1"))))); //int form=2*n+i+2*(j-1) ;
Une pierre deux coups:Code:package FormuleBigInteger1; import java.math.BigInteger; import java.util.ArrayList; import java.util.Scanner; public class FormuleBigInteger1 { public static void main(String[] args) { FormuleBigInteger1 P1 = new FormuleBigInteger1 (); Scanner keby = new Scanner(System.in); System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :"); BigInteger s=keby.nextBigInteger(); BigInteger m=keby.nextBigInteger(); for (BigInteger x = s ; x.compareTo(m) == -1 || x.compareTo(m) == 0;x = x.add(new BigInteger("1")) ) { System.out.printf("\n"+ P1.Formule2(x)); } keby.close(); } public BigInteger Formule3 (BigInteger n){ //long p=0; //BigInteger i; int AV[] ={ 1, 6, 5, 4, 3, 2, 1, 4, 3, 2, 1, 2, 1, 4, 3, 2, 1, 2, 1, 4, 3, 2, 1, 6, 5, 4, 3, 2, 1, 2 }; // regarder dans les commentaire de chaque ligne pour comprendre ce que je veux faire BigInteger deux = new BigInteger("2"); BigInteger i = AV((deux.multiply(n)).mod(new BigInteger("30"))); // int i=AV[(2*n)%30]; BigInteger j = Div1((deux.multiply(n)).add(BigInteger.valueOf(i))); //int j=Div1(2*n+i); BigInteger form = (deux.multiply(n)).add(BigInteger.valueOf(i)).(deux.multiply(n)).add(BigInteger.valueOf(BigInteger.valueOf(j).sub(new BigInteger("1"))))); //int form=2*n+i+2*(j-1) ; if ( n.compareTo(BigInteger.valueOf(2))<=0 ){ return Formule2 (n); }else if (Div1(form).compareTo(BigInteger.valueOf(1))==0){ return form; }else{ return Formule2 (n); } } public BigInteger Div1 (BigInteger n) { //BigInteger d=sqrt(n); int step; if ( n.compareTo(BigInteger.valueOf(5))<0 ) { if((n.compareTo(BigInteger.valueOf (2)) == 0) || (n.compareTo(BigInteger.valueOf (3)) == 0)) { return BigInteger.valueOf (1) ; } else { return BigInteger.valueOf (2); } } else if((n.mod(new BigInteger("6")).equals(BigInteger.ZERO))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(2)))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(4)))) { return BigInteger.valueOf (2); } else if (n.mod(new BigInteger("6")).equals( BigInteger.valueOf(3))) { return BigInteger.valueOf (3); } else { step=2; int i= 5; while (BigInteger.valueOf(i).multiply(BigInteger.valueOf(i)).compareTo(n) <= 0) { if (n.mod(BigInteger.valueOf(i)).equals( BigInteger.valueOf(0))) { return BigInteger.valueOf (i); } else { i=i+ step; if ( step==2) { step= 4; } else { step=2; } } } return BigInteger.valueOf (1); } } public BigInteger Formule2 (BigInteger n){ BigInteger p=new BigInteger("0"); loop1: for (BigInteger j = n ; j.compareTo(n.multiply(new BigInteger("2"))) < 0 /*|| j.compareTo(n.multiply(new BigInteger("2"))) == 0*/;j = j.add(new BigInteger("1")) ) { n=j; int i=0; int r=0; BigInteger deux = new BigInteger("2"); BigInteger control = (deux.multiply(n)).add(new BigInteger("1")); BigInteger Q = Div1((deux.multiply(n)).add(new BigInteger("1"))); BigInteger b = Q; long sortie = 0; ArrayList<BigInteger> K= new ArrayList<BigInteger> (); K.add((deux.multiply(n)).add(new BigInteger("1"))); while ((Q.compareTo(new BigInteger("1")) <0) && (sortie == 0)) { b = Q ; control = (deux.multiply(n)).add(new BigInteger("Q")); Q = Div1((deux.multiply(n)).add(new BigInteger("Q"))); r=K.size(); while (BigInteger.valueOf(i).compareTo(BigInteger.valueOf(r)) < 0) { if (control== K.get(i) ) { sortie = sortie + 1; } i=i+1; } K.add((deux.multiply(n)).add(new BigInteger("Q"))); } if ((Q.compareTo(new BigInteger("1")) ==0) && (sortie == 0)) { p=(deux.multiply(n)).add(b); break loop1 ; } } return p; } }
voici aussi un autre version du code mais avec le signe moins que je dois faire après:
Ce sont des lignes qui me reste a fin de parfaire mon code;Code:i=AV[(2*n-1)%30]; j=Div1(2*n-1+i); form=2*n-1+i+2*(j-1) ;
Merci d'avance;
-----