python求最大公约数和最小公倍数

缺乏、安全感 2024-02-18 23:48 147阅读 0赞

法1

  1. a=24
  2. b=36
  3. #a的约数集(第1种求法)
  4. setys_a=set()
  5. for i in range(1,a+1):
  6. if a%i==0:
  7. setys_a.add(i)
  8. #b的约数集
  9. setys_b=set()
  10. for i in range(1,b+1):
  11. if b%i==0:
  12. setys_b.add(i)
  13. print(a,'和',b,'的最大公约数为:',max(setys_a & setys_b))
  14. #a的倍数集(24,24*2,24*3,.....,24*36)
  15. setbs_a = set()
  16. for i in range(1,b+1):
  17. setbs_a.add(a*i)
  18. #b的倍数集(36,36*2,36*3,....,36*24)
  19. setbs_b = set()
  20. for i in range(1,a+1):
  21. setbs_b.add(b*i)
  22. print(a,'和',b,'的最小公倍数为:',min(setbs_a & setbs_b))

法2

  1. a=24
  2. b=36
  3. #a的约数集(第2种求法)
  4. setys_a = set()
  5. for i in range(1,int(a**0.5+1)):
  6. if a % i == 0:
  7. setys_a.add(i)
  8. setys_a.add(int(a/i))
  9. setys_a.add(a)
  10. #b的约数集
  11. setys_b=set()
  12. for i in range(1,b+1):
  13. if b%i==0:
  14. setys_b.add(i)
  15. print(a,'和',b,'的最大公约数为:',max(setys_a & setys_b))
  16. #a的倍数集(24,24*2,24*3,.....,24*36)
  17. setbs_a = set()
  18. for i in range(1,b+1):
  19. setbs_a.add(a*i)
  20. #b的倍数集(36,36*2,36*3,....,36*24)
  21. setbs_b = set()
  22. for i in range(1,a+1):
  23. setbs_b.add(b*i)
  24. print(a,'和',b,'的最小公倍数为:',min(setbs_a & setbs_b))

法3

  1. a=24
  2. b=36
  3. #a的约数集(第3种求法)
  4. setys_a = set()
  5. for i in range(1,int(a/2+1)):
  6. if a % i == 0:
  7. setys_a.add(i)
  8. setys_a.add(a)
  9. #b的约数集
  10. setys_b=set()
  11. for i in range(1,b+1):
  12. if b%i==0:
  13. setys_b.add(i)
  14. print(a,'和',b,'的最大公约数为:',max(setys_a & setys_b))
  15. #a的倍数集(24,24*2,24*3,.....,24*36)
  16. setbs_a = set()
  17. for i in range(1,b+1):
  18. setbs_a.add(a*i)
  19. #b的倍数集(36,36*2,36*3,....,36*24)
  20. setbs_b = set()
  21. for i in range(1,a+1):
  22. setbs_b.add(b*i)
  23. print(a,'和',b,'的最小公倍数为:',min(setbs_a & setbs_b))

发表评论

表情:
评论列表 (有 0 条评论,147人围观)

还没有评论,来说两句吧...

相关阅读

    相关 公约数公倍数

    最大公约数(GCD)是指两个或多个整数共有的最大因数,而最小公倍数(LCM)是指两个或多个整数共有的最小倍数。 要求两个整数的最大公约数和最小公倍数,可以使用欧几里得算法。