#includeint gcd(long long n,long long m){ return m ? gcd(m,n%m) : n;}int main(){ long long n,m; while(scanf("%lld %lld",&n,&m)!=EOF) { printf("%lld\n",n*m/gcd(n,m)); } return 0;}
有两种方法
1.让大的那个数*1, *2,*3,*4 一直乘到可以被另一个数整除为止(这个貌似叫累加法?忘了)比如 2 5第一步:ans=5*1 不行 第二步 ans=5*2 行了从小数开始也可以 不过会影响效率(要多乘几次)2.根据唯一分解定理 一个数最小公倍数*最大公约数=两数乘积所以用欧几里得算法求出最大公约数 用两数乘积除一下 就可以了本题使用的是第二种方法:最小公倍数*最大公约数=两数乘积
具体的资料如下:https://blog.csdn.net/deepinc/article/details/79587878
题目如下: 两仪剑法是武当派武功的高级功夫,且必须2个人配合使用威力才大。同时该剑法招数变化太快、太多。设武当弟子甲招数变化周期为M,武当弟子乙招数变化周期为N,两弟子同时使用该剑法,当2人恰好同时达到招数变化周期结束时,威力最大,此时能将邪教妖人置于死地。请你计算威力最大时,每人用了多少招(用t表示)?