我正在爲我的任務寫一個小程序來查找素數的原始根。到目前爲止,該程序適用於13個較小的素數,並提供正確的根數。但對於更高的素數,它只顯示較少的原始根。而現在我陷入素數41,顯示沒有原始根源。我使用DOUBLE數據類型進行計算,並再次嘗試使用數據類型DECIMAL,但沒有運氣。有誰知道這種問題?謝謝。最高值的數據類型可以存儲在c#
0
A
回答
4
如果您正在嘗試查找大整數,您是否嘗試過使用.NET 4中的BigInteger
?
請注意,在double
中存儲整數是一個壞主意 - 因爲它的範圍內的每個雙精度都不能精確存儲。 IIRC,decimal
可以總是準確地存儲整數,但只能得到28或29位數......並且它仍然是一個壞主意,因爲您試圖表示整數。
另一方面,「固定素數爲41」的含義並不十分清楚。你真的確定它是一個大整數數據類型嗎?
0
這比數據大小問題更可能是算法問題。你的算法不需要做比將你想要獲得根的頭兩個值更多的值。而不是直接將候選人提高到小於p的每個功率,然後取結果mod p,從1開始,然後反覆乘以您正在測試的值,並在每個步驟後得到結果mod p 。這意味着你將永遠不需要使用大於p * candidate
的數字,並且能夠使用int或long來處理相當大的數字。
0
素數總是整數,所以不需要使用double。如果您的計算失敗爲41,則問題與您所使用的數據類型的大小無關。您需要發佈您使用的代碼。
0
WAY回來的時候,我用C++寫了自己的素數。在足夠大的時候,沒有可用的數據類型 - 您可能需要刪除自己的數據類型。如果你用bit,nybbles,bytes和words長大,這很容易(嘿,作爲一個旁人,我是唯一一個記得字節是整數的寬度而不是8位的人)?但是,如果你沒有很好地掌握記憶和使用方法,自己就不會那麼容易。
Waffling post我知道,但你會學到很多關於計算機如何工作,如果你創建自己的數據類型。還有很多關於C#與你重寫所有的操作符等!
相關問題
- 1. 數據類型可以存儲非常大的值C
- 2. 整數類型可以在C++中存儲的值的範圍
- 3. 是否可以將C數據類型存儲在變量中?
- 4. 什麼類型的數據可以類類型存儲?
- 5. 在C中存儲數據類型
- 6. 數據類型來存儲的值
- 7. 我可以在Redis中存儲這種類型的數據嗎?
- 8. 這是C語言中最大的數據類型來存儲大數值嗎?
- 9. 用於存儲鍵值映射的最佳PostgreSQL數據類型?
- 10. 用於存儲貨幣值的VB.NET最佳數據類型
- 11. C++最大數值存儲
- 12. 高效的Python數據存儲(抽象數據類型?)
- 13. 以C存儲和分類數據的最佳方式#
- 14. 可以存儲浮點類型數組中的id值嗎?
- 15. INT存儲VAR類型以及在c#
- 16. 存儲鍵/值緩存的數據庫表數據類型
- 17. 是否可以使用C#將多個數據類型存儲在ArrayList中?
- 18. 哪種類型的表格存儲可以提供高性能?
- 19. NSUserDefaults可以存儲多種不同的數據類型嗎?
- 20. 如何存儲可能是多種數據類型的值?
- 21. 什麼數據可以存儲在SQL Server中的varbinary數據類型?
- 22. 值存儲在C結構「神奇」以下類型的自己
- 23. 數據庫 - 將數值存儲在VARCHAR數據類型中
- 24. 是否有可以存儲能夠存儲不同類型的數據結構?
- 25. C如何在內存中存儲不同的數據類型?
- 26. 列表的類型,以存儲Multipe數據類型
- 27. 如何存儲更大的值比小數(7.9 * 10功率28)數據類型可以容納在C#
- 28. 是否存在以Java存儲符號的數據類型
- 29. 存儲加密字段數據的最佳數據類型
- 30. Visual C++找出變量數據類型的最大可能值
您應該使用int或long,素數始終是整數(按定義)。我懷疑邏輯中有一個錯誤,因爲數字41的失敗絕對不是由於數據類型的大小造成的 – Rob 2011-02-13 23:24:29
您是否可以介紹Post以及示例代碼? – Crimsonland 2011-02-13 23:29:11