使用列表理解进行素因数分解

2023-12-13

我想仅使用列表理解方法和/或找到给定数字的所有素因数.Haskell 中的(函数组合运算符)。我特别想避免递归解决方案。

例如,pfactors 120必须产生[2,2,2,3,5] output.

I tried:

pfactors n = [p | p <- [2..n], n `mod` p == 0, [d | d <- [1..p], p `mod` d == 0] == [1,p]]

但当我打电话时pfactors 120,结果是[2,3,5],并非所有素因数。


我是这样做的:

pfactors :: Integer -> [Integer]
pfactors n = [ p
             | p <- [2..n]                                  -- Possible factors
             , [d | d <- [1..p], p `mod` d == 0] == [1,p]   -- Are prime 
             , _ <- [ p | i <- [1..n], n `mod` p^i == 0] ]  -- Divisible powers

它本质上是您拥有的解决方案,但不同之处在于它最后有一个额外的列表理解,其中包含与p因素纳入n.

免责声明现实中我真的不会这么做。

EDIT我觉得写上面的内容很脏,所以作为参考,这更接近我要写的内容:

pfactors' :: Int -> [Int]
pfactors' = unfoldr firstFactor
  where
    firstFactor n =
        listToMaybe [(f, n `div` f)
                    | f <- [2..n]
                    , n `mod` f == 0]

依赖项: Data.List (unfoldr), Data.Maybe (listToMaybe)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用列表理解进行素因数分解 的相关文章

  • 绑定变量时 Haskell 中的无限循环

    下面的 Haskell 代码不会终止 有人可以解释一下为什么吗 谢谢 f let x 10 in let x x x in x 我认为解释器首先绑定 x 10 然后将 x x 计算为 100 并绑定 x 100 环境变为 x 100 那么整
  • Haskell:如何创建将函数应用于元组项的最通用函数

    这是一个个人练习 旨在更好地理解 Haskell 类型系统的局限性 我想创建最通用的函数 将某些函数应用于 2 条目元组中的每个条目 例如 applyToTuple fn a b fn a fn b 我试图让这个函数在以下每种情况下都起作用
  • 在 Haskell 中等待然后检测按键的简单方法是什么?

    我对 Haskell 还很陌生 所以我正在寻找一种简单的方法来检测按键 而不是使用getLine 如果有人知道任何库 或者知道一些这样做的技巧 那就太好了 如果有更好的地方可以问这个问题 请直接告诉我 我将不胜感激 如果您不想阻止 可以使用
  • Haskell:处理死锁的自引用列表

    GHC 允许永久阻止以下内容是否有任何有用的理由 list 1 tail list 看起来列表迭代器 生成器有点复杂 我们应该能够做一些更有用的事情 Return error Infinitely blocking list Return
  • 如何在 blaze-html 中渲染 blaze-svg 标记

    我想将使用 blaze svg 生成的 svg 图直接包含在使用 blaze html 生成的 html 中 两者都基于 blaze markup 所以我希望它很容易 diagram1 Svg diagram1 try1 Html try1
  • 算法 - 如何有效删除列表中的重复元素?

    有一个list L 它包含以下元素任意类型each 如何有效删除此类列表中的所有重复元素 必须保留订单 只需要一个算法 因此不允许导入任何外部库 相关问题 在Python中 从列表中删除重复项以使所有元素都是唯一的最快算法是什么在维持秩序的
  • 表达式“ap zip tail”如何工作

    我想知道怎么写f x zip x tail x 点免费 所以我使用了pointfree程序 结果是f ap zip tail ap作为 Control Monad 的函数 我不明白点自由定义是如何工作的 如果我能从类型的角度去理解的话 希望
  • 谁能解释一下 GHC 对 IO 的定义吗?

    标题非常自我描述 但有一个部分引起了我的注意 newtype IO a IO State RealWorld gt State RealWorld a 剥离newtype 我们得到 State RealWorld gt State Real
  • “反向”使用 Maybe Monad

    假设我有很多功能 f a gt Maybe a g a gt Maybe a h a gt Maybe a 我想按以下方式组合它们 如果 f 返回 Nothing 则计算 g 如果 g 返回 Nothing 则计算 h 如果其中任何一个计算
  • 计算两点之间的距离(Haskell)

    给定两个元组的输入 我希望能够使用以下公式计算两点之间的距离 距离 sqrt x1 x2 2 y1 y2 2 所以我希望函数调用和输出如下所示 gt distance 5 10 3 5 5 385 当我尝试运行下面的代码时 它告诉我输入 w
  • 如何找到仅是 2、3 和 5 的幂的倍数的所有数字的列表? [复制]

    这个问题在这里已经有答案了 I am trying to generate a list of all multiples which can be represented by the form where a b and c are w
  • 如何将只缓存某些内容的字段添加到ADT?

    我经常需要向 ADT 添加字段 仅记住一些冗余信息 但我还没有完全弄清楚如何又好又高效地做到这一点 说明问题的最好方法是举个例子 假设我们正在使用无类型 lambda 项 type VSym String data Lambda Var V
  • 我应该使用镜头中的什么来按索引构建只读吸气剂?

    我有一个内部细节被隐藏的类型 我想提供某种镜头 可以在特定索引处读取所述类型的元素 但是not修改它们 一个Ixed我的类型的实例似乎没有做我想要的事情 因为它明确允许修改 尽管不允许插入或删除 如果我想允许只读索引 我不确定我使用什么 如
  • 在 Haskell 命令行应用程序中提示输入密码

    以下 Haskell 程序提示用户在终端中输入密码 如果输入正确则继续 main do putStrLn Password password lt getLine case hash password member database of
  • 有没有办法在 Emacs 中使用 Djinn 自动生成 Haskell 代码?

    标题几乎说明了一切 我正在寻找这样的东西 f Int gt Bool gt Int f body Djinn 可以使用定理证明来通过证明该类型存在来生成此类函数的代码 我想知道 是否有现有的方法可以从 Emacs 中获取此功能 因此 我不需
  • 嵌套在其他 monad 中的 IO 操作未执行

    我有一个 foobar IO ParseResult String String ParseResult 是一个在这里定义的 monad https hackage haskell org package haskell src exts
  • 将名称绑定到值与将值分配给变量

    阅读 Bartosz Milewski 的文章完整的 https www fpcomplete com school starting with haskell basics of haskell 3 pure functions lazi
  • 如何使用 Haskell 提交 html 表单

    我知道如何使用http 管道 http hackage haskell org package http conduit 2 1 0包的 simplehttp 从 URL 检索页面 现在如果那样的话怎么办 网页有一个输入文本字段和一个提交按
  • Haskell 中实例声明的参数顺序切换

    我想进行实例声明 但自由类型变量不是最后一个变量 例如 我有一个类声明 class Poppable m where tryPop m a gt Maybe a m a 现在我想让 Q PSQ 优先级队列 成为 Poppable 的实例 具
  • Haskell - 翻转具有两个参数的类型类的参数

    我有一个多参数类型类 它提供了一个可以交换其参数的函数 class Swappable a b where swappable a gt b gt Bool So if a and b form Swappable a b then b a

随机推荐

  • 在 F# 中使用“内联”

    The inline在我看来 F 中的关键字与我习惯的用途有些不同 例如C 例如 它似乎会影响函数的类型 什么是 静态解析类型参数 不是所有 F 类型都是静态解析的吗 我应该什么时候使用inline功能 The inline关键字指示函数定
  • 如何使用ajax和jquery更新特定的div

    我在现场工作 那里有一个铁轨 想想 gmail 框架 就像 gmail 应用程序一样 我只想在单击导航栏上的链接时更新内部 div 我已经得到了它 所以 div 发生了变化 但它肯定没有给我我所希望的结果 这是我所拥有的的一个粗略轮廓 di
  • 更新后无法同时运行多个Android模拟器

    在 SDK Manager 中安装更新之前 它运行良好 但是我无法同时运行两个模拟器 这个问题有什么解决办法吗 我也遇到过同样的问题 为了解决这个问题 我创建了新的 AVD 并尝试运行它 OR emulator arm avd
  • Spring Security 6 CustomAuthenticationFilter(打算替换UsernamePasswordAuthenticationFilter)不起作用

    引用https www baeldung com spring security extra login fields 我打算自定义 Spring security Authentication UsernamePasswordAuthen
  • 为什么应用程序模块不需要提供服务的模块?

    ServiceLoader java 文档指出 强烈建议应用程序模块不需要包含服务提供者的模块 为什么强烈建议这样做 如果不遵循建议会发生什么 上下文 这间接意味着定义服务的模块不应该导出该服务的提供者 我认为在同一模块中提供服务的默认实现
  • 如何使用 EPPlus 从 Excel 文件 (xlsx) 获取/读取图片

    假设我有一个名为sheet1其中包含一张名为pic 001我怎样才能得到这张图片System Drawing Image object 好的 我找到了如何 public static Image GetImage string sheetn
  • Angularjs:预览净化后的 html

    请找到plnkr 我想显示一些 html 预览 html 已经在服务器上进行了清理 例如 lt b gt HELLO lt b gt 我怎样才能显示html表单 在示例中 我想显示myHtml2显示为myHtml 第一次预览 html di
  • 在单选按钮选择上显示元素

    我想展示input text场上radio button普通 JavaScript 中的选择 我缺少什么 const form document querySelector form const size form elements siz
  • 在 Objective-C 中,什么时候应该使用属性,什么时候应该使用实例变量?

    我不熟悉同时具有属性和实例变量的程序语言 所以我不知道使用属性和实例变量的好方法 现在 我在 Objective C 代码中仅使用属性 并且不使用任何实例变量 我需要使用实例变量吗 或者仅使用属性是 Objective C 的最佳实践 in
  • iPhone 上的二进制短信

    我正在寻找有关如何在 iPhone 上实现二进制 SMS 的信息 我特别想知道你需要在 iOS 应用程序中做什么 如果可能的话 监听特定的 SMS 端口并 然后收到专用的二进制短信通知 当然 我正在寻找基于官方 公共 API 的解决方案 没
  • 如何处理多种日期格式?

    当我到达下面的 df date 行时 当具有此格式的日期时应用程序崩溃2016 12 27 14 40 46 0000用来 致命错误 在解包可选值时意外发现 nil 我也看到了这一点 错误 执行被中断 原因 EXC BAD INSTRUCT
  • 使用 CImg 加载 PNG

    我无法使用 CImg 加载 PNG 我听说您需要先获取 libpng zlib 才能开始工作 但我不确定如何设置 我在Ubuntu上 我的来源 include
  • Firefox 上的 Polymer 1.0 ReferenceError:Polymer 未定义

    您好 我在 Chrome 和 Opera 上有一个可用的 Polymer 1 0 网页 现在我需要该页面在 Firefox 和 Safari 中运行 我有以下测试
  • Iframe 下的 IE11 怪异模式 - javascript 错误

    我几天来一直在阅读和寻找答案 但找不到答案 希望这篇文章能带来救赎 在我的公司 我们有一个在 IE8 上运行的网络应用程序 我们正在尝试迁移到 IE11 我们快到了但是 我们有一个旧模块 它是在旧框架中编写的 该框架托管在 iframe 中
  • 如何在 django-cms 中使用 iframe

    我正在寻找一个好的解决方案 使最终用户能够在模板占位符中插入 iframe Soundcloud 我考虑过使用 djangocms text ckeditor 插件 在里面文档它说使用可配置的清理程序来完成此操作 djangocms tex
  • ClassCastException 在 scala 中使用 ArgumentCapture for Double

    我使用时遇到问题ArgumentCapture for a Double在斯卡拉 我正在尝试捕捉一个Double对被嘲笑的特质的论证 当尝试捕获时 相同的语法可以正常工作Int 这是一个测试示例 import org scalatest F
  • 如何使用go模板通过FuncMap解析html文件

    我使用以下代码来解析 html 模板 效果很好 func test w http ResponseWriter req http Request data struct A int B int A 2 B 3 t template New
  • ubuntu 中不支持 Major.minor 版本 52.0

    我在用jdk1 8 0 25 当我使用以下命令检查 Java 版本时 java version 它输出以下内容 java version 1 7 0 65 OpenJDK Runtime Environment IcedTea 2 5 3
  • 如何自动将 MySQL 列转换为小写

    是否有一个属性可以添加到列中 以便将其值转换为小写 而不是通过 PHP 对每个值执行此操作 你也许可以通过trigger在插入或更新时触发 我自己 我宁愿创建一个view具有相关列的小写版本 视图的 SQL 可能类似于 SELECT ID
  • 使用列表理解进行素因数分解

    我想仅使用列表理解方法和 或找到给定数字的所有素因数 Haskell 中的 函数组合运算符 我特别想避免递归解决方案 例如 pfactors 120必须产生 2 2 2 3 5 output I tried pfactors n p p l