0

I'm working on a small personal project involving elliptic curves, and I'm having a bit of difficulty with the curve's instance variables. The variables are printed correctly in the main method, but the print method always returns that each variable is equal to 0. Does anyone see a way to fix this? Please bear with me, I know that this is a fairly trivial problem.

public class ellipticcurve {

public int A, B, p;
public ellipticcurve(int A, int B, int p) {
    A = this.A;
    B = this.B;
    p = this.p;
    // E:= Y^2 = X^3 + AX + B
}

public static boolean isAllowed(int a, int b, int p) { 
    return ((4*(Math.pow(a, 3)) + 27*(Math.pow(b, 2)))%p != 0);
}

public static void printCurve(ellipticcurve E) {
    System.out.println("E(F" + E.p + ") := Y^2 = X^3 + " + E.A + "X + " + E.B + ".");
}

public static void main(String[] args) {
    ArgsProcessor ap = new ArgsProcessor(args);
    int a = ap.nextInt("A-value:");
    int b = ap.nextInt("B-value:");
    int p = ap.nextInt("Prime number p for the field Fp over which the curve is defined:");

    while (isAllowed(a, b, p) == false) {
        System.out.println("The parameters you have entered do not satisfy the "
                + "congruence 4A^3 + 27B^2 != 0 modulo p.");
        a = ap.nextInt("Choose a new A-value:");
        b = ap.nextInt("Choose a new B-value:");
        p = ap.nextInt("Choose a new prime number p for the field Fp over which the curve is defined:");
    }

    ellipticcurve curve = new ellipticcurve(a, b, p);
    System.out.println(curve.A + " " + curve.B + " " + curve.p);
    printCurve(curve);
    System.out.println("The elliptic curve is given by E(F" + p 
            + ") := Y^2 = X^3 + " + a + "X + " + b + ".");
}
0

1 Answer 1

2

In your constructor it should be in this way.

public ellipticcurve(int A, int B, int p) {
   this.A = A;
    this.B = B;
    this.p = p;
     // E:= Y^2 = X^3 + AX + B  
}

instead of

public ellipticcurve(int A, int B, int p) {
   A = this.A;
   B = this.B;
    p = this.p;
   // E:= Y^2 = X^3 + AX + B
}

You are assigning the instance variable to the variable passed in the constructor so the instance variable will be initialized to their default value

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.