用穷举法和迭代法求两个整数的最大公约数
穷举:
一个数一个数试,直到两数同时除尽。
#include<stdio.h>
int main()
{
int x, y,i,n;
scanf_s("%d%d", &x, &y);
if (y > x)
{
n = x;
x = y;
y = n;
}
for (i = y; i >= 1; i--)
{
if (x % i == 0 && y % i == 0)
{
printf("%d", i);
break;
}
}
return 0;
}
迭代——遍历法
#include<stdio.h>
int main()
{
int x, y,t=1;
scanf_s("%d%d", &x, &y);
while(t!=0)
{
t = x % y;
x = y;
y = t;
}
printf("%d", x);
return 0;
}
回来补充
默默的,我学到了递归,于是乎,就这样了:
int cz(int x,int y)
{
if(x%y == 0)
return y;
else
return cz(y,x%y);
}
这样,无比简单的两行代码,,,,,,但是,不太容易想。
没有想到一个好的函数名,大家随意哈。
初学,谅解