最大公约数
最大公约数:
求任意两个正整数的最大公约数(GCD)。
解题思路:
判断输入的两数大小,将小数储存在n中,利用for循环遍历1到n的所有约数的可能,判断是否为公约数,若是则存入k中。
代码:
#include<iostream>
using namespace std;
int main()
{
int m,n,temp,i,k;
cout<<"Input m & n:"<<endl;
cin>>m>>n;
if(m<n)
{
temp=m;
m=n;
n=temp;
}
for(i=1;i<n;i++)
{
if(m%i==0&&n%i==0)
k=i;
}
cout<<"The GCD of "<<m<<" and "<<n<<" is: "<<k<<endl;
return 0;
}
问题拓展:
解题思路:
欧几里得算法。
代码:
#include<iostream>
using namespace std;
int main()
{
int m,n,temp,b;
cout<<"Input m & n:"<<endl;
cin>>m>>n;
if(m<n)
{
temp=m;
m=n;
n=temp;
}
b=m%n;
while(b!=0)
{
m=n;
n=b;
b=m%n;
}
cout<<"The GCD of "<<m<<" and "<<n<<" is: "<<n<<endl;
return 0;
}