解题思路:
输入两个数,其最大公约数一定比这两个书当中小的那个数小,可以使用条件运算符,选择其中小的那个,将这个数递减,当两个数对这个数取余数都为0时,则这个数就为他们的最大公约数,就可以终止递减循环。
例如:
8与24
选出小的那个
为8
对两数取余
7 | 6 | 5 | 4 | |
8 | !=0 | !=0 | !=0 | ==0 |
24 | !=0 | !=0 | !=0 | ==0 |
注意事项:
注意break终止。
参考代码:
#include<stdio.h>
int maxdivisor(int a,int b)
{
int i,j,max;
max=(a<b)?a:b; //选择小的那个数
for(j=max-1;j>=0;j--)
{
if(a%j==0&&b%j==0)
{
i=j;
break; //一定要终止,不然会运算出所有的公约数
}
}
return i;
}
int minmultiple( int a,int b)
{
int d;
d=(a*b)/maxdivisor(a,b); //套数学公式,最小公倍数=两数相乘/最大公约数。
return d;
}
int main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
c=maxdivisor(a,b); //最大公约数
d=minmultiple(a,b); //最小公倍数
printf("%d %d\n",c,d);
return 0;
}
0.0分
1 人评分
【明明的随机数】 (C++代码)浏览:779 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:746 |
字符串比较 (C语言代码)答案错误????浏览:595 |
C语言考试练习题_排列 (C语言代码)浏览:718 |
用筛法求之N内的素数。 (C语言代码)浏览:664 |
矩形面积交 (C++代码)浏览:1125 |
找出最长的字符串来 (C语言代码)浏览:1759 |
上车人数 (C语言代码)浏览:709 |
简单的a+b (C语言代码)浏览:635 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:354 |