求两个给定正整数的最大公约数和最小公倍数

每日一练社区 2021-08-11 11:53:41

本题要求两个给定正整数的最大公约数和最小公倍数。 输入格式:
输入在两行中分别输入正整数x和y。
输出格式:
在一行中输出最大公约数和最小公倍数的值。

输入样例1:
在这里给出一组输入。
例如:
100
1520

输出样例1:
在这里给出相应的输出。
例如:

20 7600

以下程序实现了这一功能,请你填补空白处内容:

def hcf(x, y):
   if x > y:
	   smaller = y
   else:
	   smaller = x 
   for i in range(1,smaller + 1):
	   if((x % i == 0) and (y % i == 0)):
		   hcf = i 
   return hcf
def lcm(x, y): 
   if x > y:
	   greater = x
   else:
	   greater = y
   while(True):
	   ____________________;
	   greater += 1
   return lcm
num1 = int(input("输入第一个数字: "))
num2 = int(input("输入第二个数字: "))
print("最大公约数为",hcf(num1, num2),"最小公倍数为",lcm(num1,num2))
...全文
553 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw_星期八 2023-02-15
  • 打赏
  • 举报
回复
最小公倍数计算逻辑,从两个数中找到最大值,然后保证最大值分别和这两个数取余为0的,那这个最大数就是对应的最小公倍数了,比如10和20,最小公倍数就是20,这个取余操作必须是并且操作,当第一次循环退出时,给最大值➕1,依次再循环,直至找到这个最大值能把两个数都能整除。 直接写写不出来的时候,对着选项反推可以更快的得到答案。
鸿雁向苍天 2022-10-12
  • 打赏
  • 举报
回复
hcf函数有都会,这么算结果只会是1,range范围应该改成range(smaller,1,-1)
weixin_47354082 2022-03-25
  • 打赏
  • 举报
回复
1,求最大公约数,已知数两数为被除数,除数从较小的被除数开始,向1递减,找到第一个同时被两个数整除的数。 2,求最小公倍数,已知两数为除数,被除数从较大的数+1开始,向上递增,找到第一个同时能整除两整数的数。
患患 2021-10-28
  • 打赏
  • 举报
回复 2
答案有问题 最大公约数,这只能求出最小公约数
小尹明 2021-11-02
  • 举报
回复 1
@患患 我觉得没问题啊
患患 2021-11-02
  • 举报
回复 1
@小尹明 我搞错了,的确会循环到最大的
_九. 2021-12-19
  • 举报
回复
@患患 它会一直运行到小于或等于两个数较小的那个数为止,然后输出这个值。

11,198

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧