0

我创建了一个程序,它将生成给定两个数字的 HCF(最高公因数)。

f1 = []
f2 = []
num1 = int(input("Enter first number:"))
num2 = int(input("Enter second number:"))
n1 = num1 + 1
n2 = num2 + 1
for i in range(1,n1):
      if num1%i == 0: f1.append(i)
for j in range(1,n2):
      if num2%j == 0: f2.append(j)
hcf = 1
for x in range(0,(len(f1)+1) ):
    for y in range(0,(len(f2)+1)):
        if f1[x]==f2[y]:
            hcf = f2[y]
print("The highest common factor of "+str(num1)+" and "+str(num2)+" is "+str(hcf))

它工作正常,直到找到两个数字的因素。但是当程序运行时,它显示了一个索引错误if f1[x]==f2[y]:。错误是:

    if f1[x]==f2[y]:
IndexError: list index out of range

这个错误的原因是什么,我该如何纠正它?

4

2 回答 2

0
for x in range(0,(len(f1)+1) ):
   for y in range(0,(len(f2)+1)):
    if f1[x]==f2[y]:
        hcf = f2[y]

问题是范围(0,len(f1)+1)从0到列表的长度+ 1,我认为你不会有问题,如果你把它替换为:

for x in f1:
  for y in f2:
    if x == y:
     hcf = y
于 2017-12-30T05:54:48.800 回答
0

不需要len(f1)+1。下面应该工作。

f1 = []
f2 = []
num1 = int(input("Enter first number:"))
num2 = int(input("Enter second number:"))
n1 = num1 + 1
n2 = num2 + 1
for i in range(1,n1):
    if num1%i == 0: f1.append(i)
for j in range(1,n2):
    if num2%j == 0: f2.append(j)
hcf = 1
for x in range(0,(len(f1)) ):
    for y in range(0,(len(f2))):
        print "{0} : {1}".format(x, y)
        if f1[x]==f2[y]:
            hcf = f2[y]
print("The highest common factor of "+str(num1)+" and "+str(num2)+" is "+str(hcf))
于 2017-12-30T05:57:45.093 回答