解题思路:
主要因为我是新手,看到优质解题的几种方法都不是一个新手容易能看懂的,所以我就站在新手的角度,仅使用有限的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 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:628 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1092 |
简单的a+b (C语言代码)浏览:676 |
C二级辅导-公约公倍 (C语言代码)浏览:1550 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
输出正反三角形 (C语言代码)格式错误!!!浏览:1178 |
A+B for Input-Output Practice (III) (C语言代码)浏览:592 |
求组合数 (C语言代码)浏览:1208 |
【蟠桃记】 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:631 |