C语言辗转相除法求最大公约数(精简版)
C语言代码
int fun(int a, int b)
{
int r;//a % b的余数
if(a < b){ // 保证a > b;
int t = a;
a = b;
b = t;
}
//辗转相除法
while((r = a % b) != 0){ //r == 0 退出循环
a = b;
b = r;
}
return b;
}
数学证明
完整可以运行C语言代码
#include <stdio.h>
int fun(int a, int b);
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
int x = fun(a,b);
printf("%d",x);
return 0;
}
int fun(int a, int b)
{
int r;//a % b的余数
if(a < b){ // 保证a > b;
int t = a;
a = b;
b = t;
}
//辗转相除法
while((r = a % b) != 0){ //r == 0 退出循环
a = b;
b = r;
}
return b;
}