一、穷 举 法
int divi_0(int x, int y)
{
int i=0;
if (x < y)
{
int temp = y;
y = x;
x = temp;
}
for (i = y; i >= 1; i--)
{
if (x%i == 0 && y%i == 0)
{
return i;
}
}
}
二、辗 转 相 除 法(欧几里德算法又称辗转相除法)
int divi_1(int x, int y)
{
int temp=0;
while (x%y)
{
temp = x%y;
x = y;
y = temp;
}
temp = y;
return temp;
}
三、更 相 减 损 术
int divi_2(int x, int y)
{
//非递归实现
int temp=0;
while (x != y)
{
if (x > y)
{
x = x - y;
}
else
y = y - x;
}
return x;
//递归实现
if (x == y)
{
return x;
}
else if (x > y)
{
return divi_2(x - y, y);
}
else
{
return divi_2(y - x, x);
}
}
主函数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int x, y;
scanf("%d %d", &x, &y);
int ret=divi_0(x,y);
printf("%d", ret);
return 0;
}