解题思路:
主要因为我是新手,看到优质解题的几种方法都不是一个新手容易能看懂的,所以我就站在新手的角度,仅使用有限的C语言基础进行答题:
最大公约数,就是两个数所能整除的最大的那个数,且这个数肯定是不会同时大于这两个整数,至多仅大于这两个数的最小的那个。
所以分两种情况:
一、是两个数m,n里面本身最小的那个数就是最大公约数。这种情况就比较简单了,首先判定m和n谁他,若是m最大,那么只要m%n==0,就说明n是最大公约数,m就是最小公倍数;
二、两个数m,n里面最小的那个数不是最大公约数,即m%n!=0;(假使m>n),那么就需要进入循环语句之中,要满足m和n都能整除的数,就是公约数,但是这种数肯定不是唯一的,我们需要的是最大的公约数,所以最好是从大往小的除。且最大公约数肯定是≤n的。所以就从n-1开始--循环;第一个能被同时整除的数就是最大公约数,此时需要终止循环,所以需要增加一句break;
最小公倍数,就是这两个数相乘再除于最大公约数就可以了。
注意事项:
1、首先需要判定m和n谁大谁小;
2、因为只要最大公约数,所以在m%n≠0的时候,一定是在循环中,使用递减的循环会简单点,且一定增加break,否则会出现多组公约数。
参考代码:
#include<stdio.h>
int main()
{
int m,n,t,i,j;
scanf("%d%d",&m,&n);
if(n>m)
{
t=n;
n=m;
m=t;
}
if(m%n==0)
{
i=n;
j=m*n/i;
printf("%d %d",i,j);
}
else
{
for(i=n-1;i>0;i--)
{
if(n%i==0&&m%i==0)
{
j=m*n/i;
printf("%d %d",i,j);
break;
}
}
return 0;
}
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:604 |
母牛的故事 (C语言代码)浏览:435 |
校门外的树 (C语言代码)浏览:956 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:762 |
WU-输出九九乘法表 (C++代码)浏览:1654 |
1017题解浏览:571 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1144 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:455 |
简单的a+b (C语言代码)浏览:547 |
三进制小数 (C语言代码)浏览:812 |