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

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(使用前将#替换为@)

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

  • 为什么这个记忆器适用于递归函数?

    我不明白为什么下面的代码是这样的fib以线性而非指数时间运行 def memoize obj Memoization decorator from PythonDecoratorLibrary Ignores kwargs cache ob
  • 分割如何提高埃拉托斯特尼筛法的运行时间?

    我遇到了埃拉托色尼筛的分段实现 它的运行速度比传统版本快很多倍 有人可以解释一下分段如何提高运行时间吗 请注意 我想在其中找到素数 1 b 它适用于这个想法 用于查找 10 9 之前的质数 我们首先生成 sqrt 10 9 以下的筛选素数
  • c中使用递归的strlen函数

    我对递归主题很陌生 我一直在尝试使用递归编写 strlen 函数 这就是我尝试过的 int strlen char str int i if str i 0 return i 1 return strlen str i 我尝试了一些非常相似
  • 递归和大O

    我最近正在完成一项涉及递归和大 O 表示法的计算机科学作业 我相信我很好地理解了这一点 虽然当然不是完美的 但是有一个问题给我带来了最多的问题 奇怪的是 一看就知道是作业上最简单的一个 使用大哦符号提供最佳增长率来解决以下递归问题 T 1
  • 如何在 PHP 中递归删除目录及其全部内容(文件+子目录)? [复制]

    这个问题在这里已经有答案了 如何在 PHP 中删除目录及其全部内容 文件和子目录 手册页中的用户贡献部分rmdir http www php net rmdir包含一个不错的实现 function rrmdir dir if is dir
  • 第99章 啤酒瓶递归好像不行

    好的 这是我在学习过程中编写的简单代码 void SingTheSong int NumOfBottles if NumOfBottles 0 printf there are simply no more bottles of beer
  • 如何在球拍中查看扩展宏?

    我得到了这个答案https stackoverflow com a 70318991 https stackoverflow com a 70318991关于编写一个简单的宏来记录宏扩展时的时间 然后始终返回该时间 lang racket
  • 哪个更快?按引用传递与按值传递 C++

    我认为按引用传递应该比按值传递更快 因为计算机不复制数据 它只是指向数据的地址 但是 请考虑以下 C 代码 include
  • 方案如何返回多个值?

    我注意到几乎所有方案函数只能返回一个列表作为输出 下面 我想返回邻居的所有相邻节点的多个值 define neighbors l w if and 1 l 1 w list and l 1 w and 1 l w how to output
  • php 删除特定文件夹及其所有内容

    我正在使用 php 删除包含已删除帖子图像的文件夹 我正在使用下面的代码 这是我在网上找到的并且做得很好 我想知道当一个文件夹中有其他文件夹时 如何只删除其中的特定文件夹 当我使用下面的代码时 如何才能做到这一点 使用 dev images
  • NodeJS 在目录中递归地哈希文件

    我能够实现目录中的递归文件遍历 即探索目录中的所有子目录和文件 为此我使用了answer https stackoverflow com questions 5827612 node js fs readdir recursive dire
  • 在Racket中将结构递归转化为累积递归

    我有一些代码来查找最大高度并将其替换为关联的名称 身高和姓名有单独的列表 每个列表的长度相同且非空 我可以使用结构递归来解决这个问题 但必须将其更改为累积递归 而且我不确定如何做到这一点 我见过的所有例子都让我困惑 有人能够将代码变成使用累
  • 在堆栈已满并给出分段错误之前,C/C++ 中的最大递归函数调用次数?

    我正在做一个问题 我使用递归函数来创建线段树 对于较大的值 它开始出现分段错误 所以我之前认为可能是因为数组索引值越界 但后来我认为这可能是因为程序堆栈太大 我编写这段代码是为了计算系统出现段错误之前允许的最大递归调用次数 include
  • MySQL 最佳实践:SELECT 子递归尽可能提高性能?

    我想选择一个根项目及其子项 使其性能尽可能高 我更喜欢使用嵌套集模型 但这次表结构遵循邻接模型 有关嵌套集和邻接模型的更多信息 http mikehillyer com articles managing hierarchical data
  • 这个对自身单位的列表理解是如何工作的?

    在 haskell IRC 频道中有人问 是否有一种简洁的方法来定义一个列表 其中第 n 个条目是之前所有条目的平方和 我认为这听起来像一个有趣的谜题 递归定义无限列表是我真正需要练习的事情之一 所以我启动了 GHCi 并开始尝试递归定义
  • 如何用流程图表示递归函数?

    我需要在流程图上表示递归函数 我的问题是我不知道如何指示该函数可以一次在多个元素上调用自身 例如扫描图形的函数 有人有什么建议吗 在流程图中 您通常不会为循环之类的内容添加多次调用 您只需指示可以重复调用代码 直到满足条件为止 因此 对于递
  • 合并xml文档

    我遇到的所有关于合并 XML 文档的解决方案都无法实现我的愿望 让我解释 XML 文档 1 a b title Original Section b title Original Child Section b b title Origin
  • Python如何处理无限递归?

    因此 在使用 Python 时 我注意到程序的堆栈大小基本上没有限制 继续对数字执行幂运算 即使在达到数千位之后 精度仍然保持完美 这让我想知道 如果我不小心进入了Python的无限递归循环怎么办 编译器会注意到并抛出堆栈溢出错误吗 或者程
  • 仅使用堆区域的递归

    是否有仅使用堆区域的递归示例 在 C 中 基于函数调用的递归总是使用堆栈 几乎按照定义 如果您愿意将递归转换为迭代 那么可以仅使用堆空间 但这并不是真正的递归 您可以通过在堆中实现堆栈来实现这一点 某些问题可以使用尾递归 http en w
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an

随机推荐

  • 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