描述输入两个正整数 m 和 n 输入它们的最大公约数。输入描述一行两个正整数 m 和 n 之间用空格隔开。输出描述一行一个正整数表示 m 和 n 的最大公约数。用例输入 1 24 36用例输出 1 12提示数据范围:2 = mn = 10000。来源Online Judge http127001
最大公约数即为两个数的公共因子中最大的那个数。首先找到两个数中较小的那个数,然后从较小的数开始递减,找到两个数都能整除的最大的那个数即为最大公约数。
具体算法如下:
- 读取输入的两个数 m 和 n。
- 将 m 和 n 中的较小值赋给变量 min_num。
- 从 min_num 开始递减,判断是否能同时整除 m 和 n,如果能整除,则找到最大公约数,输出该数并结束。
- 如果一直没有找到能同时整除 m 和 n 的数,则最大公约数为 1,输出 1。
代码示例:
m, n = map(int, input().split())
min_num = min(m, n)
for i in range(min_num, 0, -1):
if m % i == 0 and n % i == 0:
print(i)
break
if i == 1:
print(1)
时间复杂度分析:
最坏情况下,需要遍历的次数为 min(m, n) 次,所以时间复杂度为 O(min(m, n))。
原文地址: https://www.cveoy.top/t/topic/iOAK 著作权归作者所有。请勿转载和采集!