我已经看到这样的功能存在BigInteger,即BigInteger#gcd.Java中是否还有其他函数适用于其他类型(int,long或Integer)?这似乎是有意义的java.lang.Math.gcd(有各种各样的重载),但它不存在.它在别的地方吗?
(请不要将此问题与"我如何自己实施"这一问题混淆,请!)
在一组数字上计算最大公约数和最小公倍数的最简单方法是什么?可以使用哪些数学函数来查找此信息?
例如,假设您有一个浮点数列表,它大约是常见数量的倍数
2.468,3.700,6.1699
这大约是1.234的倍数.您如何描述这种"近似gcd",您将如何进行计算或估算呢?
与我对这个问题的回答密切相关.
language-agnostic algorithm math floating-point greatest-common-divisor
计算n个数的最大公约数的最快方法是什么?
我想找到使用JavaScript的最大公约数.
以前做过那些并愿意分享的人?
我正在写一个混合数字类,需要一个快速简单的"最大公约数"函数.任何人都可以给我代码或代码的链接?
所以我正在用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)
Run Code Online (Sandbox Code Playgroud)
该函数采用数字列表.这应该打印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
Run Code Online (Sandbox Code Playgroud)
好的,解决了
def GCD(a, b):
if b == 0:
return a
else:
return GCD(b, a % b)
Run Code Online (Sandbox Code Playgroud)
然后使用reduce,就像
reduce(GCD, (30, …Run Code Online (Sandbox Code Playgroud) 我是一名高中生,正在写一篇关于RSA的论文,我正在用一些非常小的素数做一个例子.我理解系统是如何工作的,但我不能为我的生活使用扩展的欧几里德算法计算私钥.
这是我到目前为止所做的:
现在我只需要计算私钥d,它应该满足ed = 1(mod 3168)
使用扩展欧几里得算法找到d使得de + tN = 1我得到-887•25 + 7•3168 = 1.我把7扔掉,得到d = -887.但是,尝试解密消息时,这不起作用.
我从我的书中知道d应该是2281,并且它有效,但我无法弄清楚它们是如何达到这个数字的.
有人可以帮忙吗?我在过去的4个小时里尝试过解决这个问题,到处寻找答案.我正在手工进行扩展欧几里德算法,但由于结果有效,我的计算应该是正确的.
提前致谢,
MADS
有人可以举例说明两个以上数字的最大公约数算法吗?
我相信编程语言并不重要.
所以我正在尝试学习R并使用一些资源,包括一本名为"使用R发现统计数据"和其他一些很酷的电子书.
我理解编程中的一个很好的方法是Euclid算法.
在循环中实现它可以像这样实现:
gcd(x,y) //assuming x is the largest value
//do
r = x%y;
x = y;
y = r;
//while r != 0;
return x;
Run Code Online (Sandbox Code Playgroud)
在Google上进行了几次搜索后,SO和Youtube刷新了我对gcd算法的记忆,我找不到一个不使用循环的内存.甚至递归方法似乎都使用循环.
如何在不使用循环或if语句的情况下在R中实现这一点?
提前致谢.