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中,要显示两个区间之间的素数,我们可以使用用户定义函数和列表推导。
广告