使用递归辅助函数检查素数

2023-11-29

我正在尝试使用递归检查一个数字是否为素数。我被要求使用递归辅助函数,但我不确定应该如何实现它。

我想我知道这个算法,但我从未尝试过在 Racket 中使用递归辅助函数。这是我目前的想法:

  1. 看看 n 是否能被整除i = 2
  2. Set i = i + 1
  3. If i^2 <= n继续。
  4. 如果没有值i均分n,那么它一定是素数。

这就是我到目前为止所拥有的......

(define (is_prime n)
  (if (<= n 1)
      #f
      (if (= (modulo n 2) 0)
          #f

)

使用递归辅助函数的好方法是什么?

Thanks!


使用助手仅仅意味着您应该将程序分成更小的部分,并可能在单独的过程中封装带有额外参数的循环 - 并且在Scheme中循环经常通过递归调用来实现。一种(天真的)方法来实现is_prime程序是:

(define (is_prime n)
  (cond ((<= n 1) #f)
        ((= n 2) #t)
        ((= (modulo n 2) 0) #f)
        (else (check 3 n))))

; recursive helper
(define (check i n)
  (cond ((> (* i i) n) #t)
        ((= (modulo n i) 0) #f)
        (else (check (+ i 2) n))))

有很多方法可以实现这个过程,也有很多可能的优化;以上应该足以让您开始。

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

使用递归辅助函数检查素数 的相关文章

  • Prolog中计算数字是否为素数

    我正在尝试计算输入是否是素数 但出了问题 这是我的代码 primeNumber X prime prime A 1 prime prime A B R is A mod B R 1 R A prime prime X B B lt A Ne
  • 多维数组中的数组排列保留键 PHP

    这两天我一直在疯狂地尝试完成这个任务 也许你可以启发我 这是针对赛马投注排列的 每次用户玩游戏时 我都会得到一个多维数组 2 个级别 第一级包含比赛 ID 第二级包含用户为该比赛选择的马匹 它看起来像这样 play array 4 gt a
  • 地形/山地算法未按预期工作

    我想使用一个非常基本的原理创建一个上面有山的地形 如以下高度图所示 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0
  • 生成尾调用操作码

    出于好奇 我尝试使用 C 生成尾部调用操作码 斐波那契数很简单 所以我的 C 示例如下所示 private static void Main string args Console WriteLine Fib int MaxValue 0
  • 递归与迭代算法

    我正在实现欧几里德算法来查找两个整数的 GCD 最大公约数 给出了两个示例实现 递归和迭代 http en wikipedia org wiki Euclidean algorithm Implementations http en wik
  • 使用Lisp或Scheme进行Java程序的运行时配置

    我现在看到几个项目在实际配置取决于仅在运行时可用的东西时结束 配置 Java 程序的典型方法是根据某些应用程序特定规则读取一个或多个属性文件 然后根据它们的值采取操作 在某一时刻 这种情况会崩溃 您需要在配置中使用实际的程序逻辑 然后可以用
  • 为什么删除 else 会减慢我的代码速度?

    考虑以下函数 def fact1 n if n lt 2 return 1 else return n fact1 n 1 def fact2 n if n lt 2 return 1 return n fact2 n 1 它们应该是等价的
  • MongoDB 中递归文档的结构和查询语法?

    我最近开始在工作项目中研究 MongoDB 我对 JSON 和 MongoDB 的查询结构相当陌生 所以我希望你们中的一位能够提供一些说明 我已将这个问题翻译成 Excel 术语 因为它很常见并且很好地代表了我的问题 如果我尝试将 Exce
  • while循环内的递归,它是如何工作的?

    你能告诉我这段java代码是如何工作的吗 public class Main public static void main String args Strangemethod 5 public static void Strangemet
  • Scheme 和 Common Lisp 之间的实际区别是什么? (或任何其他两种 Lisp 方言)

    注意 我并不是在问学哪个 哪个更好或者诸如此类的问题 我选择了 SICP 的免费版本 因为我觉得它读起来很好 我听说过有关它的好东西 并且我对编程的这一方面很感兴趣 我知道Scheme 是Lisp 的一种方言 我想知道 Scheme 和Co
  • 使用线性递归计算第 n 个斐波那契数 [重复]

    这个问题在这里已经有答案了 我努力了二元递归找到第 n 个斐波那契数 或通过使用整个斐波那契数列 for循环进入main 但根据Java 中的数据结构和算法 第六版 迈克尔 T 古德里奇 这是一种效率极低的方法 因为它需要对该方法进行指数级
  • Clojure 尾递归与质因数

    我正在尝试自学 clojure 并使用 Prime Factors Kata 和 TDD 的原则来实现这一目标 通过一系列 Midje 测试 如下所示 fact primefactors 1 gt list fact primefactor
  • 为什么haskell中的递归列表这么慢?

    我对 Haskell 很陌生 我在 Haskell 中定义了一个函数 febs Integral a gt a gt a febs n n lt 0 0 n 1 1 n 2 1 otherwise febs n 1 febs n 2 但是
  • 如何根据递归关系确定递归树的高度?

    如何确定在处理递归运行时时构建的递归树的高度 它与确定普通树的高度有何不同 替代文本 http homepages ius edu rwisman C455 html notes Chapter4 ch4 9 gif http homepa
  • 向 DrRacket 添加“Simple Scheme”语言

    我想读完这本书 http www eecs berkeley edu bh ss toc2 html http www eecs berkeley edu bh ss toc2 html 但我无法让 简单方案 语言正常工作 该代码将无法运行
  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 正则表达式引擎如何解析具有递归子模式的正则表达式?

    此正则表达式匹配回文 1 2 我无法理解它是如何工作的 递归何时结束 以及正则表达式何时从递归子模式中断并转到 part Thanks 编辑 抱歉我没有解释 2 and 1 1 指第一个子模式 对其自身 2 反向引用第二个子模式的匹配 即
  • 方案符号中区分大小写

    据我所知 Scheme 中的符号不 区分大小写 即 eq Hello hello 评估为 t 因为两者都用符号表示 hello 并且scheme具有两个同名符号是同一个对象的属性 然而 这对我来说似乎并非如此 而且事情似乎区分大小写 无论我
  • 如何在 Visual Studio Code 上运行 Scheme?

    我想知道如何在 Visual Studio Code 上运行简单的方案代码 我已经安装了一个名为 Scheme 的扩展 但下一步是什么 我没有找到有关如何运行代码或开发人员联系方式的扩展的任何详细信息 现在在 VSCode 上编译Schem
  • 递归中的收益回报

    我正在尝试创建一个 IEnumrable

随机推荐

  • ms-access加载数据问题

    我有一个非常复杂的表格 如下所示 替代文本http img9 imageshack us img9 2465 test2xk jpg 然而 我的数据库中总共只有 8MB 的数据 它的工作方式是用所有记录名称一直填充左侧的列表框 当您滚动记录
  • 使用 SCALER_CROP_REGION 裁剪时 Camera2 预览会拉伸

    我想在以下位置显示预览全屏使用camera2 API 我选择的相机尺寸是4160x3120 16 9 我的屏幕是1080x1920 9 16 因此 如果我希望预览正确缩放 我必须裁剪相机输出 Rect zoomCrop new Rect 0
  • C4 保存图像的一部分

    嘿 我浏览了保存图像的示例 然后我只想保存屏幕的一部分 我设法保存从图像左上角开始的部分 但实际上我想保存屏幕的中心 仅保存图像的一部分的神奇之处在于设置具有特定大小的图形上下文 如下所示 UIGraphicsBeginImageConte
  • 从绑定项获取 ItemsControl 内的 DataGrid

    我有一个 ItemsControl 在其模板中使用 DataGrid 如下所示
  • Java正确处理异常

    对JAVA或异常处理不太熟悉 寻求一些关于什么是可以接受的 什么是不受欢迎的建议 该场景 我正在构建一个生命游戏程序 我设置了条件来检查单元格是否超出范围 并且不尝试访问该 单元格 我的问题是 使用 try catch 块代替 8 个条件是
  • 相对于页面上滚动位置的视觉计数器

    对于一个项目 我必须使用 html 和 javascript 制作一个可视计数器 相对于窗口的滚动位置从 150 倒数到 0 我不完全确定我应该如何去做这件事 但这是我到目前为止所拥有的 HTML span class meterCount
  • Nginx 位置指令中子目录的正则表达式或通配符

    我的开发人员将在本地计算机上编辑多个 Wordpress 站点 我想为他们设置一次 Nginx 而无需他们将来编辑配置文件 通常 当 Nginx 配置为托管 Wordpress 时 会包含如下位置块 location try files u
  • file_put_contents() 在尝试导出图像时发出错误

    我通过将多个图像复制到新图像中来创建图像 在程序的最后一步中 我尝试将此文件导出到文件夹中 代码如下
  • 获取互斥体后调用await操作[重复]

    这个问题在这里已经有答案了 如何使用写入文件await FileIO WriteTextAsync 在 Windows Phone 8 1 中 获取后mutex这样就不会有两个线程访问同一个文件并确保互斥 我正在执行以下操作 mutex W
  • jQuery Mobile Cordova (Phonegap) 在每个页面底部留下空白

    对于我的每个 jQm 页面 每个页面的底部似乎都有一些空白 并且它无缘无故地添加了滚动行为 我已附上屏幕截图 这种不必要的滚动行为给我带来了很多麻烦 我检查了firebug中的页面 似乎jQm正在添加 min height 213px 到页
  • 不带正则表达式的 String.replaceAll

    我想替换字符串中子字符串的所有实例 但是String replaceAll 只接受一个模式 我从上一场比赛中获得的字符串 是否可以将转义添加到我拥有的模式中 或者是否有一个版本replaceAll 在另一个接受文字字符串而不是模式的类中 只
  • Matlab uint8 稀疏

    在 Matlab 中创建稀疏矩阵时 您似乎可以创建一个填充逻辑数或双值数的稀疏矩阵 在阅读周围内容时 我了解到 Matlab 不支持其他类型的稀疏矩阵 即uint8或其他整数 在我的应用程序中我知道max values 16 而记忆是至关重
  • 如何让文字接触到div的底部

    我有一个包含较大文本元素的 HTML 页面 我希望文本与包含的 div 的底部对齐 以便它接触到 div 的底部 我尝试跟随 但文本和底部之间仍然有一些空格 有什么方法可以删除这个空格并使文本接触底部吗 Here是我尝试过的活生生的例子
  • 显示模式时出现“aria-hidden elements do not contains focusable elements”问题

    我在用着反应模态在我的应用程序中 当它打开时运行斧头辅助工具给出以下错误 aria 隐藏元素不包含可聚焦元素 这是因为 React 模态添加了一个aria hidden true 到应用程序的根元素 我的所有应用程序组件都在 div 下呈现
  • 如何使用 FFMPEG 分割视频,以便每个块都以关键帧开始?

    我们需要将大型实时 WMV 视频源分割成大小相同的小块 我们制作了一个脚本 可以很好地执行此操作 但有一点除外 视频块不以关键帧开始 因此在播放大多数视频块时 它们不会显示任何图像 直到原始视频中的关键帧最终出现为止 到达 有没有办法告诉
  • SQL Server 中的 guid 实际上是如何存储和排序/比较的?

    假设我有这个指南 2A87E3E2 2B6A 4149 9F5A 1B76092843D9 它实际上是否将其存储为数据库中的字母数字 我不这么认为 因为它必须适合 16 个字节 如果没有 那么它是如何存储的呢 我的猜测是十六进制数字 但我不
  • 如何修复ggplot中的纵横比?

    我正在尝试调整绘图的大小以适合我的文档 但我很难将绘制的图表变成正方形 Example pdf file out pdf width 5 height 5 p lt ggplot mydata aes x col1 y col2 print
  • Android TextView 停止换行

    我花了很多时间寻找解决方案 但没有找到任何与我所经历的类似的东西 当我在 G2 上运行我的应用程序时 我的文本视图都不会换行文本 无论视图有多大 如果我在模拟器上运行它 它们会适当地换行 当我的其他应用程序部署到我的 G2 时 似乎没有出现
  • AngularJS 表中的键盘导航

    我正在尝试将 Windows Delphi VCL 中制作的特殊表格 网格表单移植到 Angular 应用程序 可以在此处测试 Angular 应用程序的简化版本 jsFiddle 演示 用户可以添加任意数量的行 如 jsFiddle 中所
  • 使用递归辅助函数检查素数

    我正在尝试使用递归检查一个数字是否为素数 我被要求使用递归辅助函数 但我不确定应该如何实现它 我想我知道这个算法 但我从未尝试过在 Racket 中使用递归辅助函数 这是我目前的想法 看看 n 是否能被整除i 2 Set i i 1 If