我是Python的初学者。 我正在尝试使用Euclid算法编写程序。 问题是我不知道如何制作这个节目: 该计划的灵感来自以下观察。由欧几里德算法产生的用于计算GCD(a,b)的形式a = b * q + r的行数不遵循可预测的模式。 我们要说的是,如果计算的GCD大于1,则算法的执行比另一个更有趣,需要更多的划分,并且产生的中间商是高度可变的。 例如,在计算gcd(13,8)时获得:
Enter the minimum value range >=2: 100
Enter the maximum value range >=3: 200
Enter the minimum value of GCD: 3
Enter the minimum number of divisions: 5
Enter minimum number of different quotients: 4
GCD (156, 129) = 3, divisions: 5, different quotients: 4
GCD (159, 126) = 3, divisions: 5, different quotients: 4
GCD (171, 141) = 3, divisions: 5, different quotients: 4
GCD (177, 135) = 3, divisions: 5, different quotients: 4
GCD (177, 144) = 3, divisions: 5, different quotients: 4
GCD ( 183 , 126 ) = 3 , divisions: 5 , different quotients: 4
GCD ( 183 , 135 ) = 3 , divisions: 5 , different quotients: 4
GCD ( 183 , 141 ) = 3 , divisions: 5 , different quotients: 4
GCD ( 183 , 144 ) = 3 , divisions: 5 different quotients: 4
GCD (183, 156 ) = 3 , divisions: 5 different quotients: 4
GCD (186, 129 ) = 3 , divisions: 5 , different quotients: 4
GCD (189, 150) = 3, divisions: 5 different quotients: 4
GCD (192, 141) = 3, divisions: 5, different quotients: 4
我想在用户给出的自然数区域中找到有趣的案例。为此,程序将询问该区域的最小范围的值,该值应该> = 2,该区域的最大范围的值,其必须> 1。 = 3,所需GCD的最小值,也是所需的最小分割数和不同商的最小数量。 总而言之,我想编写一个实现函数ngcd(a,b)的程序,该函数通过欧几里德算法计算a和b的最大公约数。此外,此函数计算执行期间的其他度量。具体来说,该函数计算a和b的gcd,分割数(a = b * q + r形式的行)和调用期间生成的不同商数。
我正在尝试做的一个例子是:
public static void main (String[] args) {
NewClass test = new NewClass();
// int[] tempArray = {1, 2, 3};
// test.doSomething(tempArray);
test.doSomething({1, 2, 3});
}
感谢您的帮助!
答案 0 :(得分:0)
我不知道您是否被允许使用内置的from fractions import gcd
如果您应该非常简单image
有两种方法,递归和迭代,通常递归函数更清晰,性能更好,因此你可以这样实现:
递归:
def gcd(u, v):
return gcd(v, u % v) if v else abs(u)
它应该至少在数学部分给你一个想法。