欧几里德的除法算法(寻找HCF)有更好的方法吗?

2024-04-24 04:08:50 发布

您现在位置:Python中文网/ 问答频道 /正文

#HCF
#input

C = int(input("the bigger number:" ))
D = int(input("the smaller number:" ))

#division
N = "="
M = "x"
A = "+"


#i don't know if I can add this to the while loop
Q = C//D
S = C%D
print (C,N,D,M,Q,A,S)
E = S
s = D
D = C
#Euclid's division algorithm
while S != 0:
    Q = s//E
    S = s%E
    print(s, N,E, M, Q, A, S)
    s = E
    if S == 0:
        print ("HCF =",E)
else :
    E = S

有没有更好的写作方法? 如果我使用的语法不正确,请告诉我

我不知道为什么我不能发布这篇文章,这表明你的文章主要是代码,请解释忽略这最后一部分,这只是为了解决这个问题


1条回答
网友
1楼 · 发布于 2024-04-24 04:08:50

下面是编写代码的另一种方法

  • 更正发布代码中提供错误结果的错误
  • 使用算法中的变量为变量名提供引用
  • 使用字符串插值显示公式

欧几里德算法

Euclidean Algorithm

Reference

实施

a,b,q,r对应于算法中的a,b,qi,ri

def euclidean_algorithm(a, b):
  " Displays iterations of the euclidean algorithm "
  if b > a:
    # swap if necessary 
    # to ensure a is the larger number
    a, b = b, a

  while b:
    q = a // b
    r = a - q*b
    print(f'{a} = {q} x {b} + {r}') # use string interpolation to show formula
    a, b = b, r
    
  print(f'HCF = {a}')

  return a

用法

a = int(input('First number: '))
b = int(input('Second number: '))
euclidean_algorithm(a, b)

输出

First number: 498
Second number: 222
498 = 2 x 222 + 54
222 = 4 x 54 + 6
54 = 9 x 6 + 0
HCF = 6

相关问题 更多 >