解题思路:思考:输入m,n后,最小公倍数等于m,n均除以最大公约数min_后再乘以最大公约数max_(m*n/max_)所以,求出最大公约数是解出本题目的关键
我们来分3种情况考虑
两个数互成倍数,也是最简单的情况,此时较小的数n为最大公约数,较大的数m为最小公倍数;
两个数不互质,倒序遍历2~n,找最大公约数,
两个数互质,显而易见最大公约数为1;最小公倍数为m*n;
注意事项:
参考代码:
#include<stdio.h> #include<stdlib.h> int main (){ int m,n; int max_=0;//最大公约数 int min_=0;//最小公倍数 int temp=0; int k =0; int flag=0; scanf("%d %d",&m,&n); if (m<n) {temp=m; m=n; n=temp; }//令m>n //若两数成倍数关系,则最大公约数为较小的那个,最大公倍数为较大的那个 if(m%n==0) { max_=n; min_=m; } //倒着遍历2~n;寻找最大公约数 for(int i=n;i>1;i--){ if((n%i==0)&&(m%i==0)) {max_=i; min_=m*n/i; flag=1; break; } //如果2~n都没能找出他们的因子,则说明两个数互质 //最小公约数为1,最大公倍数为m*n if(flag==0) { max_=1; min_=m*n; } } printf("%d %d",max_,min_); return 0; }
0.0分
0 人评分
C二级辅导-同因查找 (C语言代码)浏览:585 |
C语言训练-求素数问题 (C语言代码)浏览:1458 |
C语言程序设计教程(第三版)课后习题8.9 (Java代码)浏览:1338 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2092 |
愚蠢的摄影师 (C++代码)浏览:938 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1072 |
The 3n + 1 problem (C语言代码)浏览:505 |
永远的丰碑 (C语言代码)浏览:525 |
整除问题 (C语言代码)浏览:526 |
母牛的故事 (C语言代码)浏览:570 |