0
A
回答
0
假設你正在尋找Euler's totient function,只需撥打
euler_fi1 n = length $ filter ((==1).(gcd n)) [1..n-1]
鏈接的WP文章給出了一個公式計算直接的:
euler_fi n = let
fs = Data.List.nub $ factorize n
pr = n * product [p-1 | p <- fs]
in Data.List.foldl' div pr fs
你需要一個factorize
功能爲:
factorize n | n > 1 = go n (2:[3,5..]) where
go n [email protected](d:t)
| d*d > n = [n]
| r == 0 = d : go q ds
| otherwise = go n t
where
(q,r) = quotRem n d
下一個優化是使用質數列表,而不是(2:[3,5..])
。
1
您的錯誤來自「gcd x 0 = x」。 「x :: Int」是推斷的結果,但「gcd :: Int-> Int-> Bool」的類型聲明需要Bool。我預計「gcd x 0 =(x == 1)」是你應該輸入的內容。
相關問題
- 1. 最大公約數環
- 2. 「近似」最大公約數
- 3. 最大公約數 - 上限
- 4. 確定最大樂趣的算法
- 5. 程序找到最大的公約數
- 6. C++程序計算最大公約數
- 7. R - 最大公約數dplyr例程
- 8. 遞歸最大公約數解釋
- 9. Pascal - 最大公約數 - 無輸出
- 10. 計算在python最大公約數
- 11. 使用歐幾里德算法的最大公約數?
- 12. PHP樂趣codeing
- 13. python:浮點數的最大公約數(gcd),最好是numpy
- 14. Moq和異步使用LazyCache的樂趣
- 15. Firebase initializeApp(config);樂趣
- 16. 與OpenLDAP的樂趣
- 17. Match.fun錯誤(樂趣)
- 18. 樂趣CSS花車
- 19. 一組超過2個整數的最大公約數
- 20. 超過兩個數字的歐幾里德最大公約數
- 21. 遞歸函數來計算最大公約數
- 22. 在Scala中,樂趣_和樂趣之間的區別是什麼
- 23. 如果方法「[ACLASS respondsToSelector:@selector(樂趣)」的樂趣有三個參數
- 24. Python中最大公約數的遞歸實現
- 25. 這種方法如何確定最大公約數?
- 26. 編寫最大公約數法的麻煩
- 27. Haskell的數學式系統的樂趣
- 28. 黑莓 - 樂趣與FieldManagers
- 29. 如何執行「SEL樂趣」
- 30. Mysql查詢返回樂趣
Haskell序言已經爲您定義了一個'gcd'函數,不需要自己定義它。 – 2012-03-05 13:51:45
*「所有常見除數的長度== 1」* ---我不明白。這是什麼意思? – dave4420 2012-03-05 14:10:37
你試圖解決什麼問題? (如果是Project Euler問題73,順便說一下,最佳解決方案不會計算任何'gcd'。) – 2012-03-05 14:12:38