Haskell程式:判斷一個數能否表示為兩個素數之和
在本例中,我們將使用使用者自定義函式在Haskell中檢查一個數能否表示為兩個素數之和。在第一個例子中,我們將使用(isPrime)函式和primeSum函式;在第二個和第三個例子中,我們將使用(isPrime)函式和isSumOfTwoPrimes函式。
在下面的例子中,isPrime函式檢查給定數字是否為素數。它首先檢查數字是否小於或等於1,如果是,則返回False。然後它檢查數字是否為2,如果是,則返回True。如果數字是偶數,則返回False。否則,它檢查數字是否可以被3到數字平方根之間的任何整數整除。如果可以,則返回False,否則返回True。
primeSum函式檢查給定數字能否表示為兩個素數之和。它使用any函式來檢查2到給定數字減2之間的任何數字與另一個素數相加是否等於給定數字。
演算法
步驟1 - 定義使用者自定義isPrime函式為:
isPrime n | n <= 1 = False | n == 2 = True | even n = False | otherwise = not $ any (\x -> n `mod` x == 0) [3,5..(floor . sqrt . fromIntegral) n].
並定義使用者自定義primeSum函式為:primeSum n = any (\x -> isPrime x && isPrime (n-x)) [2..(n-2)]。
步驟2 - 程式執行將從main函式開始。main()函式控制整個程式的執行。它被編寫為main = do。在main函式中,我們將值賦給變數num,然後呼叫primeSum函式。如果該數可以表示為兩個素數之和,則返回True。
步驟3 - 初始化名為“num”的變數。它將儲存需要表示為兩個素數之和的數值。
步驟4 - 函式呼叫後,使用'print'函式將結果列印到控制檯。
示例1
在這個例子中,我們將看到如何檢查一個數能否表示為兩個素數之和。這可以透過使用使用者自定義函式來實現。
isPrime :: Integer -> Bool isPrime n | n <= 1 = False | n == 2 = True | even n = False | otherwise = not $ any (\x -> n `mod` x == 0) [3,5..(floor . sqrt . fromIntegral) n] primeSum :: Integer -> Bool primeSum n = any (\x -> isPrime x && isPrime (n-x)) [2..(n-2)] main :: IO () main = do let num = 28 print (primeSum num)
輸出
True
示例2
在這個例子中,我們將看到如何檢查一個數能否表示為兩個素數之和。這可以透過使用使用者自定義函式來實現。這裡,我們定義了一個輔助函式isPrime,它將檢查一個數是否為素數,然後使用isSumOfTwoPrimes函式檢查2到n-2之間的任何數是否可以與一個素數相加等於n。
isPrime :: Integer -> Bool isPrime n = n > 1 && all (\x -> n `mod` x /= 0) [2..n-1] isSumOfTwoPrimes :: Integer -> Bool isSumOfTwoPrimes n = any (\x -> isPrime x && isPrime (n - x)) [2..n-2] main :: IO () main = do let num = 28 print (isSumOfTwoPrimes num)
輸出
True
示例3
在這個例子中,isSumOfTwoPrimes函式接收一個整數n作為輸入,並檢查2到n-2之間的任何數是否可以與一個素數相加等於n。isPrime函式用於檢查一個數是否為素數。any函式用於檢查列表中的任何元素是否滿足特定條件。如果找到這樣的數,則函式返回True,否則返回False。
isPrime :: Integer -> Bool isPrime n = n > 1 && all (\x -> n `mod` x /= 0) [2..n-1] isSumOfTwoPrimes :: Integer -> Bool isSumOfTwoPrimes n = any (\x -> isPrime (n - x) && isPrime x) [2..n-2] main :: IO () main = do let num = 28 print (isSumOfTwoPrimes num)
輸出
True
結論
在Haskell中,要檢查一個數能否表示為兩個素數之和,我們可以使用不同的方法和使用者自定義函式。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP