具有多个数字的欧几里得算法(GCD)?

2023-12-13

所以我正在用 Python 编写一个程序来获取任意数量的数字的 GCD。

def GCD(numbers):

    if numbers[-1] == 0:
        return numbers[0]


    # i'm stuck here, this is wrong
    for i in range(len(numbers)-1):
        print GCD([numbers[i+1], numbers[i] % numbers[i+1]])


print GCD(30, 40, 36)

该函数接受一个数字列表。 这应该打印 2。但是,我不明白如何递归地使用该算法,以便它可以处理多个数字。有人可以解释一下吗?

更新了,还是不行:

def GCD(numbers):

    if numbers[-1] == 0:
        return numbers[0]

    gcd = 0

    for i in range(len(numbers)):
        gcd = GCD([numbers[i+1], numbers[i] % numbers[i+1]])
        gcdtemp = GCD([gcd, numbers[i+2]])
        gcd = gcdtemp

    return gcd

好的,解决了

def GCD(a, b):

    if b == 0:
        return a
    else:
        return GCD(b, a % b)

然后使用reduce,比如

reduce(GCD, (30, 40, 36))

由于 GCD 是结合律,GCD(a,b,c,d)是相同的GCD(GCD(GCD(a,b),c),d)。在这种情况下,Python 的reduce函数将是减少以下情况的良好候选者:len(numbers) > 2到简单的 2 数比较。代码看起来像这样:

if len(numbers) > 2:
    return reduce(lambda x,y: GCD([x,y]), numbers)

Reduce 将给定的函数应用于列表中的每个元素,这样就像

gcd = reduce(lambda x,y:GCD([x,y]),[a,b,c,d])

和做一样

gcd = GCD(a,b)
gcd = GCD(gcd,c)
gcd = GCD(gcd,d)

现在唯一剩下的就是编写代码len(numbers) <= 2。仅传递两个参数GCD in reduce确保你的函数最多递归一次(因为len(numbers) > 2仅在原始调用中),这具有永远不会溢出堆栈的额外好处。

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

具有多个数字的欧几里得算法(GCD)? 的相关文章

  • 如何使用 cython 编译扩展?

    我正在尝试从示例页面编译一个简单的 cython 扩展here http docs cython org src userguide tutorial html在我安装了 Python 2 6 64 位版本的 Windows 7 64 位计
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 如何使用 python urllib 在 HTTP/1.1 中保持活力

    现在我正在这样做 Python3 urllib url someurl headers HOST somehost Connection keep alive Accept Encoding gzip deflate opener urll
  • 在径向(树)网络x图中查找末端节点(叶节点)

    给定下图 是否有一种方便的方法来仅获取末端节点 我所说的端节点是指那些具有一个连接边的到节点 我认为这些有时被称为叶节点 G nx DiGraph fromnodes 0 1 1 1 1 1 2 3 4 5 5 5 7 8 9 10 ton
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 如何在sphinx中启用数学?

    我在用sphinx http sphinx pocoo org index html与pngmath http sphinx pocoo org ext math html module sphinx ext pngmath扩展来记录我的代
  • 来自 django 教程 was_published_recently.admin_order_field = 'pub_date'

    From Django 教程 https www jetbrains com help pycharm 2017 1 creating and running your first django project html d28041e21

随机推荐

  • Selection.OnAction = "工作簿名称!Macroname"

    假设您有两个工作簿 一个名为 MyWorkbook 另一个名为 PatchMyWorkbook 两个工作簿在保存时都打开 PatchMyWorkbook 有一个宏 用于添加按钮并将 MyWorkbook 的现有宏分配给 MyWorkbook
  • Spring 中的 Elasticsearch HTTP 身份验证

    我想访问受用户名和密码保护的远程elasticsearch https 用户名 密码 aws eu west 1 portal1 dblayer com 11109 在 Spring 中 使用 XML 配置我能够访问我的本地主机弹性 如下所
  • 使用 Jackson 和 Spring-Boot 将 Base64 编码的 JSON 解码为 POJO

    我有一个这样的请求 varA A varB TCFNhbiBKb3NlMRgwFgYDVQQK 关键在哪里varB是一个 base64 编码的 JSON 字符串 像这样的东西 nestedVarB1 some value here nest
  • SymPy 仅打印函数名称

    我正在尝试在 SymPy 中进行一些符号计算 但我无法使用乳胶打印并获得我想要的图形输出 这一直困扰着我 并且花了几个小时 也许是几天 试图找到一种自定义对象打印方式的方法 在 LaTeX 中 在 pprint 表示中 它有很好的文档记录
  • redis dbsize命令的准确性

    准确度如何dbsizeredis 中的命令 我注意到返回的键数dbsize与返回的实际键数不匹配keys命令 这是一个例子 redis cli dbsize integer 3057 redis cli keys wc l 2072 Why
  • 无法调用匿名类方法

    我正在尝试调用一个方法 setPostal String post 我是从一个匿名类创建的 但由于某种原因 编译器在缅因州甚至无法识别它 这是有什么原因吗 我的代码的一部分 地址是Student的内部类 Student public cla
  • 当我们改变父对象的原型时 __proto__ 指向哪里?

    通常 当我们使用 new 关键字创建一个新对象时 实际上 原型 创建对象的属性指向原型父类的属性 我们可以如下测试 function myfunc myfunc prototype name myfunction var child new
  • 解决 JSONException 重复键

    我正在使用谷歌自定义搜索引擎并以 JSON 格式获取结果 对于某些查询 JSON 结果具有重复的键 因此它会产生 JSONException Duplicate key nickname 等 我正在使用JAVA String str con
  • ReadyStatement 忽略查询中的参数:java.sql.SQLException: 参数索引超出范围(1 > 参数数量,即 0)[重复]

    这个问题在这里已经有答案了 我使用java和jdbc驱动程序 java sql 我得到了这段代码 String clinetIP 220 181 108 89 String sql SELECT FROM as WHERE as ip ra
  • http2 模块 nginx 不工作

    我在 nginx 中启用 http2 协议时遇到一些问题 网站上写的是 Laravel 5 但我认为这并不重要 首先 我升级nginx版本 Debian nginx V nginx version nginx 1 10 1 built wi
  • int(x) 的作用是什么?

    我见过这些 看起来像是 C 代码中的函数 但我不知道它们做什么或是什么 它们似乎做与类型转换类似的事情 但它们看起来不像类型转换 那么它们是什么 它们看起来像这样 int x where x是一些数字输入 我一直在网上查找 但我无法找到有关
  • 如何加载 BeautifulSoup 页面解析器?

    帮助 请下载指定页面并找到她的元素 id login 一定需要用于查询模块请求 import pprint import requests import bs4 url http forum saransk ru html requests
  • Apache 反向代理不适用于 Node 和 SSL

    我正在尝试在 Web 服务器上的 HTTPS 上设置我的应用程序 我有一个使用 AutoSSL 安装在 InMotion 主机上的有效证书 我的 Node 应用程序在我的 Centos 服务器上的端口 3000 上运行 我的 apache
  • 标记(块)引用的作者的正确方法是什么?

    我正在尝试找出为引用添加归因的正确方法 互联网似乎对正确的方式存在分歧 Html5医生说如下 blockquote p A quote p blockquote
  • 根据所有其他列中是否存在 0/1 创建指示符列

    我经常发现自己必须应用以下条件 我有一个表 其中有多个评级为是 否或 0 1 的二进制列 我必须使用以下规则在计算中创建一个新的中间列 如果所有列均为 否 则新列为 否 如果至少一列具有 是 则摘要列必须表示 是的 我通常使用 case w
  • 如何使用 XPath/HTMLAgilityPack 读取 JavaScript 对象

    对于我的爬虫项目 我需要从 JavaScript 对象获取产品详细信息 如何从以下 JavaScript 中有效获取对象详细信息 我使用 XPath 和 HTMLAgilityPack
  • wordpress 致命错误:内存不足

    我已从 WHM gt PHP 配置编辑器将 php 内存限制从 whm 设置为 256M 即便如此 我的 WordPress 网站和管理员仍然向我显示如下错误 Fatal error Out of memory allocated 3617
  • TCP 套接字的 Android 服务

    根据我在这里提出的上一个问题中的建议 我正在尝试为我已写入服务的应用程序推送套接字连接 昨天我花了一天的大部分时间研究服务 实际上模拟了一些服务 一个是远程的 一个是本地的 我的问题分为两部分 1 在使用了本地服务和远程服务之后 我仍然不确
  • 什么是 ANSI 格式?

    什么是 ANSI 编码格式 是系统默认格式吗 它与 ASCII 有何不同 ANSI 编码是一个稍微通用的术语 用于指代系统 通常是 Windows 上的标准代码页 它更正确地称为Windows 1252关于西方 美国系统 它可以代表某些其他
  • 具有多个数字的欧几里得算法(GCD)?

    所以我正在用 Python 编写一个程序来获取任意数量的数字的 GCD def GCD numbers if numbers 1 0 return numbers 0 i m stuck here this is wrong for i i