最大公约数和最小公倍数问题

Posted 小梁今天敲代码了吗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大公约数和最小公倍数问题相关的知识,希望对你有一定的参考价值。

等差数列 蓝桥杯192 gcd问题

题目描述

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。

现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?

思路:求出每一项之差的最大公约数,以这个最大公约数作为等差,之后计算给出的N个整数最短等差数列有几项

from math import *
n = int(input())
a=list(map(int,input().split()))
a.sort()
d=0
for i in range(0,n):
  d=gcd(d,a[i]-a[i-1])
if d==0:
  print(n)
else:
  print((a[-1]-a[0])//d+1)

核桃的数量 蓝桥杯210 lcm问题

题目描述

小张是软件项目经理,他带领 3 个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:

  1. 各组的核桃数量必须相同

  2. 各组内必须能平分核桃(当然是不能打碎的)

  3. 尽量提供满足 1,2 条件的最小数量(节约闹革命嘛)

输入描述

输入一行 a,b,c,都是正整数,表示每个组正在加班的人数,用空格分开(a,b,c<30)。

输出描述

输出一个正整数,表示每袋核桃的数量。

输入输出样例

示例

输入

2 4 5

输出

20

 思路:一道简单的求最小公倍数的题,这里我们需要注意的是,如果是自己定义的lcm函数,则a,b,c需要先求出其中两项的最小公倍数,再和第三项求

from math import *
a,b,c = map(int,input().split())
def lcm(x,y):#python3,9之前没有lcm函数,需要自己定义,如果是python3.9之后 直接lcm(a,b,c)即可
  return x//gcd(x,y)*y
d=lcm(a,b)
print(lcm(d,c))

[2001年NOIP普及组] 最大公约数和最小公倍数问题

算法分析:先求出x的所有倍数和这个数是x的多少倍,这样最大公约数的问题解决,再去找能构成符合题意的最小公倍数的数,看是否是最大公约数 注意:洛谷上提交需优化,数组范围要够,不能出现多余的循环,比如先判断是否能构成最小公倍数,再去看是否有更大的约数,如果公倍数超过最小公倍数,则退出循坏 #includ

以上是关于最大公约数和最小公倍数问题的主要内容,如果未能解决你的问题,请参考以下文章

算法---最小公倍数和最大公约数

算法---最小公倍数和最大公约数

蓝桥杯:算法训练之最大最小公倍数

算法训练 最大最小公倍数

算法选最大最小问题

最大公约数和最小公倍数