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中,要显示两个区间之间的素数,我们可以使用用户定义函数和列表推导。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP