Haskell程式:在兩個區間之間顯示素數


在Haskell中,我們可以使用使用者定義函式和列表推導來顯示兩個區間之間的素數。在第一個示例中,我們將使用 (isPrime 和 primesInRange) 使用者定義函式;在第二個示例中,我們將使用列表推導。

演算法

  • 步驟1 - 匯入Data.List庫。

  • 步驟2 - 定義使用者自定義的isPrime函式。

  • 步驟3 - 程式執行將從main函式開始。main()函式控制整個程式。

  • 步驟4 - 初始化名為“lower”和“upper”的變數。它們將儲存要列印素數的範圍。

  • 步驟5 - 在呼叫函式後,使用‘print’函式將定義範圍內生成的素數列印到控制檯。

示例1

在這個示例中,我們將看到如何使用使用者定義函式來顯示兩個區間之間的素數。

import Data.List (filter)

isPrime :: Integer -> Bool
isPrime n
   | n <= 1 = False
   | n == 2 = True
   | n `mod` 2 == 0 = False
   | otherwise = all (\x -> n `mod` x /= 0) [3,5..(floor (sqrt (fromIntegral n)))]

primesInRange :: Integer -> Integer -> [Integer]
primesInRange a b = filter isPrime [a..b]

main :: IO ()
main = do
       let lower = 10
           upper = 20
       print (primesInRange lower upper)

輸出

[11,13,17,19]

示例2

在這個示例中,我們將看到如何使用列表推導來顯示兩個區間之間的素數。

import Data.List (filter)

isPrime :: Integer -> Bool
isPrime n
   | n <= 1 = False
   | n == 2 = True
   | n `mod` 2 == 0 = False
   | otherwise = all (\x -> n `mod` x /= 0) [3,5..(floor (sqrt (fromIntegral n)))]
   
primesInRange :: Integer -> Integer -> [Integer]
primesInRange a b = filter isPrime [a..b]

main :: IO ()
main = do
       let lower = 10
           upper = 20
       print (primesInRange lower upper)

輸出

[11,13,17,19]

結論

素數是一個大於1的自然數,不能由兩個較小的自然數相乘得到。在Haskell中,要顯示兩個區間之間的素數,我們可以使用使用者定義函式和列表推導。

更新於: 2023年3月13日

217次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告