题目
求最大公约数
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
给你两个正整数a、b,请你编写程序求出它们的最大公约数,并输出这个数
输入:
两个正整数a、b
输出:
输出最大公约数(以回车结束)
输入样例:
24 36
输出样例:
12
答案
#include<stdio.h>
intmain()
{
int a,b,x,y;
scanf("%d",&a);
scanf("%d",&b);
while (1)
{
if(b>a)
{
x=a;
a=b;
b=x;
//交换a,b的值,以确保a>b//
}
y=a-b;
a=b;
b=y;
//换值,使b=y,并舍去a原来的大值//
if(a%b==0&&b>0)
{
printf("%d\n",b);
break;
}
}
return (0);
}
注意
在换值时,第二步和第三步绝对不能调换顺序,不然a和b的值都会变成a(我之前就错到这里了TAT)