You will always get 1 if they are Pythagorean triples, but not necessarily always 0 when they are not.
This is because if
x == y then
x % n == y % n; but if
x != y it is not necessarily true that
x % n != y % n. For example, if
10 == 10 then
10 % 3 == 10 % 3; but even though
10 != 16, it is not true that
10 % 3 != 16 % 3.
EDIT: I didn’t even notice a wrong operator was used in code. Using C’s
^ you cannot generate overflow, and aren’t actually testing Pythagorean triples; if you change to
a*a + b*b == c*c instead, the above should hold.
Read more here: Source link