George Irimiciuc
George Irimiciuc

Reputation: 4633

BigInteger gcd value

BigInteger n = BigInteger.valueOf(5);
BigInteger a = BigInteger.valueOf(3);
System.out.println(a.gcd(n) != BigInteger.ONE);

Why does this evaluate as true even though 5 and 3's gcd is 1?

Upvotes: 0

Views: 785

Answers (2)

Khaelex
Khaelex

Reputation: 762

You should not use the != operator, but instead use the equals() method

!(a.gcd(n).equals(BigInteger.ONE))

Explanation:

In Java, the == and != operators, when used on objects, compare if the variables are references to the same exact object in memory, not if the objects have the same value. The equals() method checks if they have the same value.

Upvotes: 3

Saj
Saj

Reputation: 18702

Since BigInteger is an object, you should rather use equals. You use == or != to compare reference of the objects.

!(a.gcd(n).equals(BigInteger.ONE));

Upvotes: 1

Related Questions