用于查找素数的 Haskell 列表理解

2024-02-17

我试图找到所有小于某个整数的素数n使用列表理解尽可能简洁。我正在学习 Haskell,这只是一个练习。我想写一些类似的东西:

isqrt :: Integral a => a -> a   
isqrt = floor . sqrt . fromIntegral

primes :: Integral a => a -> [a]  
primes n = [i | i <- [1,3..n], mod i k /= 0 | k <- primes (isqrt i)]

这当然行不通。有没有办法在列表理解中进行列表理解?

这是我收到的错误:

exercise-99-1.hs:138:39: Not in scope: `k'

exercise-99-1.hs:138:46:
    Illegal parallel list comprehension: use -XParallelListComp

exercise-99-1.hs:138:68: Not in scope: `i'

但是 - 我真的没想到语法是合法的:-)

目的是尽可能直接地翻译:" primes n= 奇数集合i少于n这样i不能被任何整除k, 对全部k在集合中:primes (isqrt i)"- 或多或少。 (我希望我猜对了?)

Thanks!


我在以下方面取得了一些进展:

primes :: Integral a => a -> [a]  
primes 2 = [2]  
primes n = 2:[i | i <- [3,5..n], all (\k -> if (mod i k /= 0) then True else False) 
                                     (primes (isqrt i))]

有没有更短的方法来编写 lambda 谓词?

edit:是的,有,感谢评论里的留言!

primes :: Integral a => a -> [a]  
primes 2 = [2]  
primes n = 2:[i | i <- [3,5..n], all ((/= 0) . mod i) (primes (isqrt i))]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于查找素数的 Haskell 列表理解 的相关文章

  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • 在 Haskell 中阅读 GraphML

    我正在尝试将包含单个有向图的 GraphML 文件读入 HaskellData Graph http hackage haskell org package containers 0 2 0 1 docs Data Graph html为了
  • 在 Ruby 中,哈希中标识符后面的冒号的含义是什么?

    我正在了解 Factory Girl 我看到了这段代码 factory post do association author factory user last name Writely end why do factory and las
  • 使用 cabal new-install 重新安装相同版本的软件包

    我正在开发 Haskell 包 我还没有上传到Hackage 版本号是0 1 0 0 我正在使用新风格的 Cabal 命令 为了在我处理包的同时测试它 使库可用于测试项目 我运行cabal new install lib构建包后 然而 我注
  • 如何在 Haskell 中获得列表的中间位置?

    我刚刚开始使用 Haskel 学习函数式编程 我正在慢慢度过Erik Meijer 在 Channel 9 的讲座 http channel9 msdn com shows Going Deep Lecture Series Erik Me
  • 我可以获得有关过度限制类型签名的警告吗?

    当我为可能更具多态性的函数提供类型签名时 GHC 或某些 lint 工具可以告诉我吗 GHC 不这样做 快速搜索 Hackage 也没有发现任何结果 实现这样的事情的一个简单但可能非常有效的方法是在 GHCi 中加载模块 使用 browse
  • “对象不是函数” - onclick 事件

    在开始之前 不 我没有发现分号的问题 并且我没有向函数传递任何值 当我尝试从控制台执行函数 login 时 它工作得很好 但是当我单击 HTML 输入按钮来调用它时 我收到 Uncaught TypeError object is not
  • 在 Python 中使用列表理解来执行类似于 zip() 的操作?

    我是一名 Python 新手 我想做的事情之一就是围绕列表理解进行思考 我可以看到这是一个非常强大的功能 值得学习 cities Chicago Detroit Atlanta airports ORD DTW ATL print zip
  • __declspec(align) 用于多个声明

    抱歉 这个非常简单的问题 无法在谷歌上找到答案 这个声明语法是 declspec align 16 float rF 4 declspec align 16 float gF 4 declspec align 16 float bF 4 相
  • 如何在 Yesod 中使用 CSS 框架?

    我想将 Blueprint CSS 框架与 Yesod 一起使用 有没有最佳实践 因为 Yesod 使用 CSS 模板 所以在我看来我不能直接使用 css 文件 我必须将它们重命名为 lucius files 吗 如何将 CSS 添加到 d
  • Haskell Cabal 包 - 找不到 Paths_ 模块

    我正在开发一个 Haskell 项目 Happstack 服务器 Blaze HTML 前端作为主要库 我想添加一个静态数据目录 看起来你可以使用 Cabal 使用自动生成的Path
  • Haskell:找不到模块“Data.List.Split”

    我正在尝试在 Haskell 中拆分列表 据我所知 最简单的方法是splitOn 但是这个函数需要Data List Split 所以我尝试运行import Data List Split在前奏曲中 但是 我收到以下错误 Could not
  • 在 Haskell 中增长数组

    我想在 Haskell 中实现以下 命令式 算法 给定一个序列对 e0 s0 e1 s1 e2 s2 en sn 其中 e 和 s 部分不一定是自然数不同的是 在每个时间步都会随机选择该序列的一个元素 例如 ei si 并根据 ei si
  • 为什么 Haskell 的默认字符串实现是一个字符链接列表?

    Haskell 默认值的事实String众所周知 实现在速度和内存方面都效率不高 据我所知 lists一般来说 在 Haskell 中实现为单链表 并且适用于大多数小型 简单数据类型 例如Int 这似乎不是一个好主意 但是对于String这
  • 如何手动推断表达式的类型

    给定 Haskell 函数 head filter fst 现在的问题是如何手动 手动 找到类型 如果我让 Haskell 告诉我我得到的类型 head filter fst Bool b gt Bool b 但我想了解仅使用所用函数的签名
  • 将数据类型设置为 Kind * -> * 这不是函子

    布伦特 约尔吉类型分类百科全书 https www haskell org haskellwiki Typeclassopedia给出以下练习 举一个类型的例子 gt 不能将其制成 的实例Functor 不使用undefined 请告诉我什
  • 如何比较表中最后一个和倒数第二个条目的值?

    我在 Oracle 中有一个名为quotes 的表 其中包含两列 date 和value 我想比较表中最后一个条目和倒数第二个条目的值 在此示例中 我想获取日期13 1 和 11 1在一行中以及每个日期的值之间的差异 10 5 5 报价表
  • OCaml 文字负数?

    我在学 这是我觉得奇怪的事情 let test treeways x match x with when x lt 0 gt 1 when x gt 0 gt 1 gt 0 如果我这样称呼它 test threeways 10 我会得到类型
  • 持久 selectList 导致错误“无法将类型‘BaseBackend backend0’与‘SqlBackend’匹配”

    我遇到以下编译错误 Couldn t match type BaseBackend backend0 with SqlBackend arising from a use of runSqlite The type variable bac
  • Haskell:是的,没有类型类。为什么是整数?

    我有一个关于 GHCi 如何假定整数类型的问题 我正在阅读 Learn you a Haskell 是 否类型的课程 如果您想阅读全文 这里有一个链接 http learnyouahaskell com making our own typ

随机推荐

  • 如何在平面文件连接管理器上重新配置列信息?

    我有一个正在从平面文件读取数据的平面文件源 我们最近在此平面文件中添加了一个新列 平面文件数据被插入到数据库表中 为了适应目标组件中的新字段 我使用了ALTER TABLE语句将新列添加到表中 这是我所做的唯一改变 平面文件和目标组件之间的
  • 如何在sql server中获取分隔符之前的第一个值

    在其中一列中 我得到 2 个值 它们之间有一个分隔符 如何提取两个值 我有类似这个专栏的东西TRN02 is 115679 5757 我需要再次将分隔符之前和分隔符之后的值分成两个单独的列 有人可以帮我解决这个问题吗 您可以使用SUBSTR
  • 如何使用 Laravel 4.1 在字符串中查找#hashtags?

    我目前正在尝试过滤输入字符串以查找用户希望与其照片一起显示的单个主题标签 但是 我目前在数据库中插入的内容不正确 最好的情况是每个主题标签都保存在带有照片 ID 的新数据库行中 但是 我真的不知道该怎么做才能实现这一目标 hashtag n
  • 如何从带有 Array 属性的 Action 方法返回 Json?

    我正在尝试从操作方法返回一些 json 数据 我有一个员工对象 如下所示 public class Employee public int EmployeeID get set public string FirstName get set
  • JQuery UI 模式对话框使用 100% CPU

    当我在 IE8 中打开模态 JQuery 对话框时 我的 CPU 使用率达到 100 不 实际上是 50 但这是一个核心的 100 如果我破坏开发人员工具 似乎会触发很多调整大小事件 我不进行任何自愿调整大小 有其他人遇到过这个问题并且知道
  • 超时功能

    我想编写一个代码 要求输入用户名 但时间限制为 15 秒 如果用户超出限制并且无法输入名称 或任何字符串 则代码将终止并显示 超时 按摩 否则应保存名称并显示 谢谢 按摩 我曾尝试过这样的操作 但它是错误的并且不起作用 请给我一个解决方案
  • Xt 错误:如果使用默认显示,则无法打开显示

    Overview 我正在尝试让 XQuartz 在 OSX 上工作 这样我就可以通过 Docker 进行 X11 转发 我正在跟进此处的说明 https learning continuous deployment github io do
  • 如何将 Geodjango 与 Google Maps API 3 集成?

    我有一个包含多个字段的 geodjango 查询集 但只想使用user name and location 一个点字段 我想将其用作谷歌地图 API 3 中的标记 请耐心等待 因为我不懂 JavaScript 而且我有一系列问题 将此视为新
  • 复制工作表中的所有内容vba

    Copy wb Sheets wsSource Name Range A1 W79 Copy Paste Special wbTarget Sheets Sheet1 Range A1 W79 PasteSpecial xlValues w
  • 如何从堆栈历史记录中清除特定活动?

    假设我有一个应用程序 其中包含名为 A B C D 的活动 现在 考虑 A 已作为根活动启动 B 已从 A 启动 C 已从 B 启动 D 已从 C 启动 现在我在活动 D 中有一个名为 删除 的按钮 如果假设 我按下活动 D 中的 删除 按
  • 使用 Swift 从 Firebase 存储中检索图像

    我正在寻找从 Firebase 存储检索图像的开始到结束代码示例 只是为了显示图像 作为图像视图或表格 我看过这里的帖子和各种教程 总感觉好像漏掉了什么 如果我能看到全貌 我就能更好地理解这一点 所附代码是我当前尝试将 photo1 从本地
  • 安装VS2008后,在winnt.h中出现编译错误

    我正在尝试将我们的项目从 VS2005 转移到 VS2008 并且在 MFC 项目上遇到此构建错误 C Program Files Microsoft SDKs Windows v6 0A include winnt h 236 error
  • 此插件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器

    我收到标题中的错误 此附加组件在本文档中为此 Google 用户帐户创建了太多基于时间的触发器 当我运行附加组件时 该插件用于创建时间触发器 我在 3 个文档中一起创建了 7 个触发器 现在我无法在任何文档中创建新的触发器 ScriptAp
  • 创建 SOAP 代理?

    我想创建一个 SOAP 代理 它修改原始 Web 服务 SOAP 标头 nampespace 并保持主体相同 做这个的最好方式是什么 创建一个 SOAP 提供程序 使用原始 Web 服务 然后修改标头和名称空间 这看起来工作量很大 如果您的
  • 通过 Javascript 获取图像的平均颜色

    不确定这是否可行 但希望编写一个返回平均值的脚本hex or rgb图像的值 我知道它可以在 AS 中完成 但希望在 JavaScript 中完成 AFAIK 做到这一点的唯一方法是
  • 更改 R 中 onRender() htmlWidgets 散点图中的线条粗细和不透明度

    我希望使用 R 包 htmlwidgets 的 onRender 函数绘制一个图 其中用户可以单击一个点并绘制一条线 我现在工作的关键是 以默认的粗细和默认的不透明度绘制一条灰线 然而 我一直坚持改变线条的粗细 并且可能改变线条的不透明度
  • 将 SpringBoot Api 部署到 IIS Web 服务器

    我使用 gradle build 创建了 spring boot api 在我当地一切正常 我在 IIS Web 服务器的 Sites DefaultsTest 中部署了角度应用程序 它运行在https example app com ap
  • 物体可以自我毁灭吗?

    我有一个需要自我毁灭的物体 能做到吗 例子有错吗 void Pawn specialMoves Coordinate const from Coordinate const to int passant m board gt replace
  • 从递归函数返回多个值

    我遇到这个问题 我必须将十进制数转换为二进制 然后将这些位存储在链表中 其中头节点是最高有效位 最后一个节点是最低有效位 解决问题本身其实很简单 只需不断递归地对 2 取模 并将结果添加到列表中 直到十进制数变为 0 即可 我陷入困境的是
  • 用于查找素数的 Haskell 列表理解

    我试图找到所有小于某个整数的素数n使用列表理解尽可能简洁 我正在学习 Haskell 这只是一个练习 我想写一些类似的东西 isqrt Integral a gt a gt a isqrt floor sqrt fromIntegral p