📅  最后修改于: 2023-12-03 15:10:46.914000             🧑  作者: Mango
本程序帮助程序员查找给定阵列的LCM与GCD的比率。下面详细介绍本程序的用法和实现。
本程序支持多种输入格式:
./program 3 6 9
);echo -e "3\n6\n9\n" | ./program
);./program < input.txt
)。本程序输出两个整数:LCM与GCD的比率。输出格式为一行两个用空格分隔的整数。例如:
18 3
以上输出表示该阵列的LCM为18,GCD为3,二者的比率为18/3=6。
本程序使用Python语言实现,并采用了以下两种算法:
下面给出Python代码实现。其中 sys.argv
用于获取命令行参数, sys.stdin
用于读取标准输入, math.gcd()
用于求最大公约数。
import sys
import math
def gcd(a: int, b: int) -> int:
return math.gcd(a, b)
def lcm(a: int, b: int) -> int:
return a * b // gcd(a, b)
def main():
arr = sys.argv[1:]
if not arr:
arr = [int(x) for x in sys.stdin.read().split()]
else:
arr = [int(x) for x in arr]
lcm_val = arr[0]
gcd_val = arr[0]
for i in range(1, len(arr)):
lcm_val = lcm(lcm_val, arr[i])
gcd_val = gcd(gcd_val, arr[i])
print(lcm_val, gcd_val)
if __name__ == "__main__":
main()
以上程序采用灵活的输入方式,可以方便地应对不同输入场景。同时,本程序还采用了标准库的函数对最大公约数进行了求解,保证了算法的正确性和效率。