求最大公约数(循环)

mac2024-10-28  11

用穷举法和迭代法求两个整数的最大公约数

穷举: 一个数一个数试,直到两数同时除尽。

#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); }

这样,无比简单的两行代码,,,,,,但是,不太容易想。 没有想到一个好的函数名,大家随意哈。

初学,谅解

最新回复(0)