如何判断一个大数是偶数还是奇数?

3

有人问了我一个面试问题。如何判断一个非常大的数字(超过double范围)是奇数还是偶数?

我的回答是:将数字存储在数组中,查找最后一位是否能被二整除。

public static boolean isEven(int[] verLargeNum)
{
    int size=verLargeNum.length;
    if(verLargeNum[size-1]%2!=0)
        return true;
    else
        return false;
}

我的问题是:有更好的方法吗?

这是一个很好的答案,就跟其他任何答案一样。 - AntonH
4
为什么不直接 return verLargeNum[size - 1] % 2 != 0 - Mysticial
@AntonH 其实,这是一个糟糕的答案,完全没有理解计算机中数字表示的方式。 - shoosh
1
恐怕此问题在面试时被问到的内容与被转达给我们的不一致。具体来说,使用了什么表示法?没有这个信息(或者询问你的面试官的能力),这个问题只能用笼统/泛泛的说法回答。 - Stephen C
2个回答

3
如果您的数字没有小数部分,您可以直接进行位运算。
If(MyBigNumber & 0x1) {
     odd
} else {
    even
}

我猜编译器会将原始代码优化为您的代码。因此,我认为在这里使用位运算是不好的实践。它使代码难以阅读,而没有提供任何好处。 - schoppenhauer

0

你的答案看起来是正确的,另一种方式是: 由于他们没有指定这个非常大的数字是否具有原始类型,因此您可以假设该数字作为int、double、long等类型处理...

String largeNumber = VERY_LARGE_NUMBER + "";
boolean isEven(String input){
    return Integer.parseInt(input.charAt(input.length()-1)+"")%2 == 0;
}

1
仅解析最后一个字符的整数,因此只有一位数字。 - CMPS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接