我想输入两个数字,然后用Python计算所有可能的差异

e1xvtsh3  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(155)

当我给予输入为17,19:我只得到17,19,2,但我希望所有小于19的数字都作为输出。因为我们处理的是素数,我们应该得到1作为GCD。
这是我的代码:

a=[]
n=int(input("Number of elements in array:"))
for i in range(0,n):
    print(f"Enter number {i+1}: ")
    l=int(input())
    a.append(l)
print(a)

for j in range(len(a)):
    for k in range(len(a)):
        diff = abs(a[j] - a[k])
        if diff > 0 and diff not in a:
            a.append(diff)
       

print (f"The final numbers are: {a}")
2izufjch

2izufjch1#

这里有几个问题。
第一个len(a)输入

for j in range(len(a)):
    for k in range(len(a)):
        diff = abs(a[j] - a[k])
        if diff > 0 and diff not in a:
            a.append(diff)

计算一次。如果将新元素追加到,则在进一步计算时将不会考虑这些元素。但是,您希望计算进一步的差异。
第二,你应该读一下欧几里得算法,因为它并不像你描述的那样工作(例如维基百科也包含了它的伪代码实现)。对于基于差的版本(也有基于除法的版本),你总是用它们的差来替换两个值中的较大值:(19,17)-〉(17,2)-〉(15,2)-〉... -〉(3,2)-〉(2,1)-〉(1,1),因此GCD为1。
因此,您要查找的序列应该是19、17、2、15、13、11、9、7、5、3、1。
同样,如果你想重新创建该算法,也不需要询问数组的元素数,因为它总是需要2个元素。

相关问题