程序填空题:欧几里德法求最大公约数 - C/C++ 分支与循环
两个正整数的最大公约数(Greatest Common Divisor)是指两个正整数的公有约数中最大的一个。即如果GCD(x,y) = k,则k是能同时整除x和y的最大除数。
欧几里德(Euclidean)在《几何原本》中描述了一种求解最大公约数的快速算法,即辗转相除法。其数学表达式为:
GCD(x,y) = GCD(y, x % y ) 设x >= y
![image.png](~/447fb32b-bcb6-468c-b32b-700ae63953e1.png)
请结合上述流程图,使用完成程序填空,将上机调试运行。
#include <iostream>
using namespace std;
int main()
{
int x = 0, y = 0;
cout << "Input x:";
cin >> x;
cout << "Input y:";
cin >> y;
if (x<y){
int t = x;
;
y = t;
}
while (true){
int r = ;
if (r==0)
;
x = y;
;
}
cout << "GCD(x,y) = " << y;
return 0;
}
答案:
第1空:x = y
第2空:x % y
第3空:break
第4空:y = r
欧几里德(Euclidean)在《几何原本》中描述了一种求解最大公约数的快速算法,即辗转相除法。其数学表达式为:
GCD(x,y) = GCD(y, x % y ) 设x >= y
![image.png](~/447fb32b-bcb6-468c-b32b-700ae63953e1.png)
请结合上述流程图,使用完成程序填空,将上机调试运行。
#include <iostream>
using namespace std;
int main()
{
int x = 0, y = 0;
cout << "Input x:";
cin >> x;
cout << "Input y:";
cin >> y;
if (x<y){
int t = x;
;
y = t;
}
while (true){
int r = ;
if (r==0)
;
x = y;
;
}
cout << "GCD(x,y) = " << y;
return 0;
}
答案:
第1空:x = y
第2空:x % y
第3空:break
第4空:y = r