2009-12-16 39 views
0

如果一個大數的整數(我的意思是20位......)是素數,我需要弄清楚。Modulo for doubles

我試圖使用強力方法,但(當然)我需要使用雙打來包含原始數字。但是,模運算符(%)是一個整數運算符 - 因此它對我來說毫無用處!

回答

18

這是不可能的,雙重只有15位有效數字。尋找一個執行BigInt class. C具體討論here.

+0

有趣的鏈接乍一看,我會確保並閱讀它!感謝您抽出寶貴的時間。 – silentcontributor 2009-12-16 14:07:39

+1

+1這是正確的答案。 – ziggystar 2009-12-25 10:07:35

1

你在尋找fmod在C標準庫嗎?或者可能fmodllong double

+0

這是fmodl長雙。謝謝! – silentcontributor 2009-12-16 14:04:39

3

由於雙數據類型被存儲爲小數值,其縮放比例爲2的冪數,並且由於它只有15位十進制數的精度,所以存儲爲雙精度數的20位數總是可以被2整除,因此不是素數。

+1

這解釋了我得到的一個錯誤 - 感謝輸入! – silentcontributor 2009-12-16 14:06:52