/
// Exam.cpp
//求32和12的最大公约数
/
#include "stdio.h" //for printf
#include "conio.h" //for getch
void main()
{
int u = 32;
int v = 12;
while(v != 0)
{
int temp = u % v;
u = v;
v = temp;
}
printf("%d", u);
//暂停,查看结果
getch();
}
思路:
拓展:求最大公约数的三种方法
辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
相减法:取两个数中的最大的数做减数,较小的数做被减数,用最大的数减去小数,如果结果为0,则被减数就是这两个数的最大公约数,如果结果不为0,则继续用这两个数中最大的数减较小的数,直到结果为0,则最大公约数为被减数。
穷举法:将两个数作比较,取较小的数,以这个数为被除数分别和输入的两个数做除法运算,被除数每做一次除法运算,值减少1,直到两个运算的余数都为0,则该被除数为这两个数的最大公约数。
下面举例说明使用辗转相除法求最大公约数:
#include"stdio.h"
#include"conio.h"
int main()
{
int a,b,t,r,n;
printf("请输入俩个数 a b\n");
scanf("%d %d",&a,&b);
if(a<b) //将a,b 交换位置,将大的放在前面
{
t=b;b=a;a=t;
}
r=a%b; //求余数
n=a*b;
while(r!=0) //当余数不为0,继续下面的循环
{
a=b;
b=r;
r=a%b; // r=0; 则不会进入下一次, 最小公倍数就是b
}
printf("最大公约数是%d,最小公倍数是%d\n",b,n/b);
getch(); //使运行结果停留
return 0;
}
最后希望的分享对你有所帮助,愿我们砥砺前行,不负韶华!敬请关注,持续更新!