#include <stdio.h> int main() { long m,n; scanf("%ld %ld",&m,&n); long j,k,temp,i; if(m<n) { i=m; m = n; n = i; } long s = m*n; j = m%n; if(j == 0) { j = n; k = s/j; printf("%ld",j+k); } else { while(j != 0) { temp = n%j; n = j; j = temp; } j=n; k = s/j; printf("%ld",j+k); } return 0; }
不记得最大公约数与最小公倍数的求法。刚开始没有先用s = m*n;直接用的m*n来表示,因为在辗转相除的过程中,m和n的值已经在悄无声息的发生变化,所以m*n的值也发生变化,会导致出错。另外用int类型的,数值太大时会出错。代码不够简洁,日后可以研究更为简洁的代码,学习别人的思路。