2014-04-12 78 views
3

我被問了一個面試問題。如何找到一個非常大的數字(超過雙倍範圍)是奇數還是偶數?如何查找大數是偶數還是奇數?

我回答說:將數字存儲在數組中,並查找最後一位數字是否可以被二整除。

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

我的問題是:有沒有更好的方法?

+0

這是一個很好的答案。 – AntonH

+4

爲什麼不只是'返回verLargeNum [size - 1]%2!= 0'? – Mysticial

+0

@AntonH實際上,這是一個糟糕的答案,它顯示了對數字在計算機中的表現方式的完全理解。 – shoosh

回答

3

如果您的號碼沒有小數部分,你可以簡單地做一些操作

If(MyBigNumber & 0x1) { 
    odd 
} else { 
    even 
} 
+0

我想編譯器會優化原始代碼到你的代碼。所以我認爲在這裏使用位操作是不好的做法。如果沒有提供好處,它會使代碼變得不可讀。 – 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

parese int僅用於最後一個字符,因此爲一個數字 – CMPS

相關問題