用穷举法和迭代法求两个整数的最大公约数
穷举: 一个数一个数试,直到两数同时除尽。
#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
);
}
这样,无比简单的两行代码,,,,,,但是,不太容易想。 没有想到一个好的函数名,大家随意哈。
初学,谅解