最大公约数和最小公倍数问题:
首先最大公约数的求法,我比较推荐辗转相除法。假设求40和24的最大公约数,首先,我们得用40除去21得出余为16,再用40(24也可以,在这就举一个例子了)除去16余8,再用16除8,没有余,故最大公约数为8。那从中我们可以得到什么灵感呢,当辗转除完后,那个没有余项的被除数就是最大公约数。(说到这,友友懂了没,自己试着多写几个数试试,你会发现新大陆的)。
最大公约数我们知道了,那么最小公倍数怎么求呢,这里有个公式!!!
最小公倍数=这两个数相乘/最大公约数
代码如下
#include <stdio.h>
//输入两个正整数m和n,求其最大公约数和最小公倍数
int main(){
int m,n,i;
printf("请分别输入两个数:");
scanf("%d%d",&m,&n);
int num_1=m,num_2=n;
if(m<n) {
m=num_2; //应该是大数除小数,所以得换值
n=num_1;
}
if(m>=n){
while(n!=0){ //例如16%8==0-->8%0==0
i=m%n;
m=n;
n=i;
}
printf("最大公约数为%d\n",m);
printf("最小公倍数为%d",num_1*num_2/m);
}
return 0;
}