1.问题:求两个正整数之间的最大公约数。
2.思路:用暴击穷举法,简单粗暴地把 1~ y(前面已经假设 x > y)都列出来分别判断是否为 x、y 的公约数,然后再找到其中最大的一个。
3.程序流程图:
4.代码实现:
#include <iostream>
using namespace std;
int main()
{
int x,y;
cin>>x>>y;
int count=1;
int k=1;
int min=1;
while(k>0){
int k=2;
if(x%k==0&&y%k==0){
count=count*k;
x=x/k;
y=y/k;
}
else{
while(k>0){
k++;
if(x%k==0&&y%k==0){
count=count*k;
x=x/k;
y=y/k;
break;
}
int min=(x<y)?x:y;
if(k>min)
break;
}
}
int min=(x<y)?x:y;
if(k>min)
break;
}
cout<<x*count<<"与"<<y*count<<"的最大公约数为"<<count<<endl;
return 0;
}