最大公约数即为两个数的公共因子中最大的那个数。首先找到两个数中较小的那个数,然后从较小的数开始递减,找到两个数都能整除的最大的那个数即为最大公约数。

具体算法如下:

  1. 读取输入的两个数 m 和 n。
  2. 将 m 和 n 中的较小值赋给变量 min_num。
  3. 从 min_num 开始递减,判断是否能同时整除 m 和 n,如果能整除,则找到最大公约数,输出该数并结束。
  4. 如果一直没有找到能同时整除 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))。

描述输入两个正整数 m 和 n 输入它们的最大公约数。输入描述一行两个正整数 m 和 n 之间用空格隔开。输出描述一行一个正整数表示 m 和 n 的最大公约数。用例输入 1 24 36用例输出 1 12提示数据范围:2 = mn = 10000。来源Online Judge http127001

原文地址: https://www.cveoy.top/t/topic/iOAK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录