[java] une erreur que j'arrive pas à corriger

dikambo -  
 Fab -
bonjour,
dans mon code j'ai une erreur à ce niveau:

for(int i=1; i<n ;i++)
{

u=(1).modInverse(i);

System.out.println("a= "+i+"et son inverse est "+u);
}
et voici l'erreur que ca me renvoie:
java:93: operator < cannot be applied to int,java.math.BigInteger

for(int i=1; i<n ;i++)

^

java:96: int cannot be dereferenced

u=(1).modInverse(i);

^
merci

3 réponses

  1. Pascal
     
    Salut,

    comme ça, c'est difficile à dire .
    ESt-ce que tu pourrais mettre le programme entier ?
    1
  2. dikambo
     
    Okay, voilà son integralité :

    import java.io.*;
    import java.math.*;
    class Algo
    {
    private BigInteger a0,b0,x,r, y, gcd;

    //constructeur da la classe sup
    Algo(BigInteger a, BigInteger b)
    {
    //declaration und initialisation des Variable
    BigInteger x0 = new BigInteger("1");
    BigInteger x1 = new BigInteger("0");
    BigInteger y0 = new BigInteger("0");
    BigInteger y1 = new BigInteger("1");
    BigInteger sign = new BigInteger("1");
    BigInteger null0 = new BigInteger("0");
    BigInteger quotient, neu_x1, neu_y1;
    a0 = a;
    b0 = b;

    while (b.compareTo(null) != 0)
    {
    r = a.mod(b);
    quotient = a.divide(b);
    a = b;
    b = r;
    neu_x1 = x0.add(quotient.multiply(x1));
    neu_y1 = y0.add(quotient.multiply(y1));
    x0 = x1;
    y0= y1;
    x1 = neu_x1;
    y1= neu_y1;
    sign = sign.negate();

    }//fin while
    gcd = a;
    x = sign.multiply(x0);
    y = (sign.negate()).multiply(y0);
    }//fin contructeur

    public BigInteger getA()
    {
    return a0;
    }
    public BigInteger getB()
    {
    return b0;
    }

    public BigInteger getX()
    {
    return x;
    }

    public BigInteger getY()
    {
    return y;
    }

    public BigInteger getGcd()
    {
    return gcd;
    }

    }//fin classe sup
    //sous classe
    class Inverse extends EuclAlg
    {
    private BigInteger r,j,u,c,n,d;//d=gcd,j=a,n=b

    public Inverse(BigInteger a,BigInteger b)
    {
    super ((BigInteger) a,(BigInteger) b);//appel du construteur de la //classe sup
    }

    void getResidue()
    {

    j=getA();
    n= getB();
    System.out.println(n);
    d=getGcd();

    /
    if(d.compareTo(null)==1)
    /*************************là il ya erreur**************/
    {
    for(int i=1; i<n ;i++)
    {
    //calcul de l'element inverse
    u=(1).modInverse(i);

    System.out.println("a= "+i+"et son inverse est"+u);

    }
    }

    }

    }
    1
  3. Fab
     
    Première erreur :

    Il faut faire un cast de n (BigInteger) en int car l'opérateur '<' ne peut pas comparer un entier avec un objet de type BigInteger.

    Deuxième erreur :

    Il faut remplacer (1).modInverse(i) par BigInteger.modInverse(Integer.toString(i)).

    (voir http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html)
    1