问题标签 [greatest-common-divisor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
798 浏览

list - Sage 上超过 2 个元素的欧几里得算法

我正在尝试做一个获取数字列表的练习,并显示如下元素列表:如果 A=[a0,a1,a2] 那么有 U=[u0,u1,u2],知道 a0 *u0 + a1*u1 + a2*u2 = d 并且 d 是 A 的 gcd。

对于 2 个元素是一件非常简单的事情,因为 Sage 具有从 a0 和 a1 中检索 u0 和 u1 的功能:

我只是不明白我怎么能用 n 个元素的列表来做到这一点。

0 投票
1 回答
1488 浏览

java - 使用 GUI 界面的 Java 最大公约数 - 整数/字符串/计算问题

我正在尝试创建一个最大公约数计算器。我必须为这个项目创建一个 GUI 界面,我认为我这样做是正确的,但是我无法测试它,因为我的计算有问题。

具体来说,我在编译器中遇到以下两行错误:

错误是“类型不匹配,无法从 String 转换为 int”我尝试插入 int x = 0; 和 int x = 0; 在它之前没有运气。我也尝试过将这些从整数更改为字符串,但它会使一切变得更加混乱。我不确定如何获取我应该使用的文本。

这是我的代码的计算部分:

这是我的整个代码:

0 投票
2 回答
13555 浏览

java - 如何在单个方法中找到三个数字的 GCD

我必须确保 3 个数字之间的 GCD 不大于 1。

这是我到目前为止的方法代码:

return 1我开始在实验室工作时,它就已经在那里了。如何确保 GCD 不超过 1?并返回所有三个整数?

如果它有助于弄清楚需要做什么,这是代码的其余部分:

更新

这是我为同一个实验室编写的新代码:

0 投票
8 回答
132783 浏览

java - 如何编写一个简单的 Java 程序来找到两个数字之间的最大公约数?

这是问题:

“编写一个名为 gcd 的方法,它接受两个整数作为参数并返回两个数的最大公约数。两个整数 a 和 b 的最大公约数 (GCD) 是作为 a 和 b 的因子的最大整数。任意数加 1 的 GCD 为 1,任意数加 0 的 GCD 为该数。

计算两个数字的 GCD 的一种有效方法是使用 Euclid 算法,该算法说明如下:

我真的很困惑如何解决这个问题。我只是想要一些提示和提示,说明我在迄今为止的程序中做错了什么。(我必须放入扫描仪,这是我老师的要求。)不要给我完整的代码,因为我有点想自己解决这个问题。也许只是给我一个提示,说明我如何合并您在上面看到的这个公式。(如果你想知道为什么我输入 == 0,那是因为我认为如果你有两个数字,比如 0 和 90,它们的 GCD 应该是 0 对吧??)

此外,我的代码必须包含 while 循环......我更喜欢 if 循环......

提前致谢!:)

我目前的程序:

0 投票
3 回答
209 浏览

java - 无法编译最大公约数的代码?

我无法编译我的代码,特别是在我调用“gcd();”的主程序中 我应该把什么放在括号里?谢谢你。

0 投票
1 回答
793 浏览

c++ - 二进制 GCD - 太慢的算法

根据维基百科(http://en.wikipedia.org/wiki/Binary_GCD_algorithm),我试图为 bignums(最多 5000 位)编写二进制 GCD。

我的 GCD 本身看起来像这样:

我也在使用自己的位集减法函数:

我没有看到任何地方可以提高这个算法的速度(二进制 GCD 本身很快),但我收到反馈说我的程序太慢了。

0 投票
8 回答
11621 浏览

php - 寻找超过 2 个整数的 GCD(最大公约数)?

我已经有一个函数可以找到 2 个数字的 GCD。

但是现在,我想扩展这个函数来找到 N 个点的 GCD。有什么建议吗?

0 投票
3 回答
277 浏览

c - 使用 C 中的结构正确实现 GCD

我正在用c实现一个非常简单的计算机代数系统。我的程序在一段时间后崩溃时遇到了一些问题。

这个想法是有一个像 3^(21+8^(3^100)) + 4 这样的表达式,并看到它等于 2 mod 7。我已经用 java 编写了程序,并试图将它移植到 c。

我就是这样做的:我有一个名为 expr 的结构。它可以是二进制表达式或原子 int

我怀疑(其中一个)问题是我没有在 gcd 函数中释放内存。这就是我编写 gcd 函数的方式。

这在java中很好用,但我不确定它是否在c中有效,因为它没有自动垃圾收集。当函数是递归的时,我不确定如何构造它。所以我想我的问题是,我应该把 free_expr 函数放在哪里?mod(a, b) 分配一个新的 expr 结构,因此它最终会创建很多永远不会被释放的 expr。我怀疑这可能是它崩溃的原因。构建这个的正确方法是什么?还是我做错了?

由于代码可维护性,我宁愿在 struct expr 中进行计算,而不是在 int 中进行计算。

谢谢你的帮助。

[编辑] 这是我的模组功能

}

phi(n) 计算欧拉函数。

[编辑 2] 这是我的平等

0 投票
2 回答
2546 浏览

c - 计算最大公约数

我编写了以下函数来计算浮点数的 GCD,但是当我为输入 (111.6, 46.5) 运行此函数时,函数中 fmod(a,b) 的计算在 2 次递归调用后开始给出错误的结果。我在这里找不到错误。谁能找到这里出了什么问题?

}

0 投票
1 回答
1414 浏览

c - GNU MP 库的 GCD 计算问题

我有一个关于 GNU MP 的问题,请你帮我解决这个问题。我在 Windows 上使用“GNU 多精度算术库”5.1.1 版。(MinGW\gcc + MSYS)

存在一个 mpz_gcd 函数来计算两个整数的“gcd”。

据我从文档中得到的,在 GNU MP 中实现了几种算法,用于计算最大公约数。其中:

  • 二进制 GCD
  • Lehmer 算法
  • 次二次 GCD

使用的算法似乎是根据整数的输入大小自动选择的。

目前,二进制算法仅在 N < 3 时用于 GCD。

对于大于 GCD_DC_THRESHOLD 的输入,通过 HGCD(Half GCD)函数计算 GCD,作为对 Lehmer 算法的推广。

所以,我想至少有三种不同的方法可以得到 gcd(a, b)。我的主要问题:我想自己指定使用哪种算法。我将比较这些算法在随机大输入(即 10^5 位)上的执行时间,以找出一些常见趋势:使用“二进制 GCD”变得比“Lehmer 方法”更差的点是“HGCD-Lehmer”泛化”确实比直接的 Lehmer 等要好。

有没有简单的方法来指定您要使用的算法?从库中提取此算法的任何方式,修改某些“#define”变量的任何方式。是否可以在不重新编译库的情况下做我想做的事情?我只是那里的初学者,我觉得无法弄清楚图书馆里的所有东西。

PS 可能有人会对此感兴趣。我在 github 上有一些代码:https ://github.com/int000h/gcd_gcc