当前位置: 首页 > 知识库问答 >
问题:

最大公约数(GCD)

孟鹤龄
2023-03-14
def get_divs(z):
      return [i for i in range(1, z) if z % i == 0]

def gcd(x, y):
      x_div=get_divs(x)
      y_div=get_divs(y)
      cd=set(x_div).intersection(y_div)
      gcd=cd[-1]
      print("The GCD of",x,"and",y,"is",gcd)
      return 1

我试图让这个程序计算两个用户输入的正整数(x和y)的最大公约数(GCD)。set函数不返回可以索引的列表。关于如何找到GCD有什么建议吗?

共有2个答案

鱼阳伯
2023-03-14

抱歉5年后回复。但是你可以用欧几里德算法找到GCD。下面是代码:

a = int(input('Enter 1st number: '))
b = int(input('Enter 2nd number: '))
r = a%b
while (r!=0):
    a=b
    b=r
    r = a%b
print(f'greatest common divisor is {b}')
龙洛城
2023-03-14

下面是算法应该是什么样子。

findGCD(int firstNum, int secondNum){
int smaller; int bigger;int remainder;
if(firstNum < secondNum) {
    smaller = firstNum;
    bigger = secondNum;
}  
else {
    smaller =  secondNum;
    bigger = firstNum;
}

while(true) {
    remainder = bigger % smaller;
    if(remainder == 0) {
         break;
    }
    else {
         bigger = smaller;
         smaller = remainder;
    }
}
return smaller;
}
 类似资料:
  • 计算两个或两个以上数字/数字数组的最大公约数。 内部的 _gcd 函数使用递归。基本情况是,当 y 等于 0 的情况下,返回 x 。否则,返回 y 的最大公约数和x / y的其余数。 const gcd = (...arr) => { const _gcd = (x, y) => (!y ? x : gcd(y, x % y)); return [...arr].reduce((a, b)

  • 问题内容: 我已经看到存在这样的功能,即。是否有在Java中的其它功能也适用于其他类型的工作(,或)?似乎这是有意义的(带有各种重载),但是它不存在。在别的地方吗? (请不要将此问题与“我如何自己实现”混淆!) 问题答案: 对于int和long而言,作为原语,并非如此。对于Integer,有人可能写了一个。 假设BigInteger是int,Integer,long和Long的(数学/函数)超集,

  • Python3 实例 以下代码用于实现最大公约数算法: 实例(Python 3.0+)# Filename : test.py # author by : www.runoob.com # 定义一个函数 def hcf(x, y): """该函数返回两个数的最大公约数""" # 获取最小值 if x > y: smaller = y else: smaller = x for i in range

  • 我正在做一些自学的Java,但似乎无法解决这个循环中的问题: 问题是找到两个整数n1和n2的最大公约数,其中d是较小的值。方法是递减d直到GCD或它达到1。。。以下是我目前的情况: 有什么指示吗?

  • 本文向大家介绍java求最大公约数与最小公倍数的方法示例,包括了java求最大公约数与最小公倍数的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java求最大公约数与最小公倍数的方法。分享给大家供大家参考,具体如下: Gongyueshu.java文件: 此处需要由控制台输入参数,eclipse环境运行的设置步骤为Run》Run Configurations进入运行的调试配置界面

  • 本文向大家介绍js计算最大公约数和最小公倍数代码实例,包括了js计算最大公约数和最小公倍数代码实例的使用技巧和注意事项,需要的朋友参考一下 一、计算最大公约数 1、小学时候一般采用质因数分解法,一般使用短除得到结果,下面用一种最初级的方法求最大公约数 2、使用欧里几德算法,辗转相除法。具体原理自行百度。下面给出两种代码算法 递归 迭代 二、最小公倍数,最小公倍数的算法,是两个数的乘积除以最大公倍数