我有一個函數檢查數字是否爲素數的問題 - 它返回的是一個數字,當它不是偶數時(甚至有時候數字也是!)。任何想法爲什麼?爲什麼檢查質數在某些非素數上返回true?
int isPrime(long x){
int i;
if(x==2||x==3) return 1; //if i = 2 or 3, return true
if(!(x&1)) return 0; //if x is even return false
for(i=3;i<=sqrt(x);i+=2) if (x%i == 0) return 0; //if x is divisible by i return false
return 1;
}
給大家,感謝這麼多的答案,我會+1所有這些,如果我的聲望足夠高:d
可悲的是,我的白癡已經達到了新的高度,我發現了錯誤在我的程序中的其他地方是邏輯的。
你可以舉一些不返回預期結果的數字嗎? – JJJ 2013-04-25 06:25:23
你有沒有通過一個負數作爲參數? – 2013-04-25 06:30:39
它似乎從它返回104760。我正在嘗試第7個項目歐拉問題,找到10001的素數。如果您想查看代碼的其餘部分,請參閱pastebin:http:// pastebin。那些做歐拉問題的人,不要看它! =)) 編輯:該代碼需要檢查偶數,順便說一句,因爲它們都是素數。但問題依然存在。 – galois 2013-04-25 06:34:03