c++编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用者两个函数,并输出结果。(补充:辗转相除法)
c++编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用者两个函数,并输出结果。(补充:辗转相除法)
·
最大公约数:两个或多个整数共有约数中最大的一个
最小公倍数:两个或两个以上的自然数中,它们有相同的倍数,当中最小的倍数就 是它们的最小公倍数。
方法一:一般方法:
#include<iostream>
using namespace std;
int yueshu (int a,int b)
{
int c;
for (int i=1;i<=a;i++)
{
if (a%i==0&&b%i==0)
{
c=i;
}
}
cout<<"最大公约数:"<<c<<endl;
}
int beishu(int a,int b)
{
int c;
for (int i=b;i<=a*b;i++)
{
if (i%a==0&&i%b==0)
{
c=i;
break;
}
}
cout<<"最小公倍数:"<<c<<endl;
}
int main()
{
int num1,num2;
cin>>num1>>num2;
if (num1>num2)
{
yueshu(num2,num1);
beishu(num2,num1);
}
else
{
yueshu(num1,num2);
beishu(num1,num2);
}
}
方法二:辗转相除法
辗转相除法又名欧几里德算法,是求最大公约数的一种方法。
求最大公约数方法:辗转相除法
求最小公约数方法:(num1 x num2)÷最大公约数
例:求125 15 两数的最大公约数和最小公倍数。
解:125 / 15 = 8 ······· 5
15 / 5 = 3 ······· 0
所以两数的最大公约数为5,最小公倍数为 (125 x 15) ÷ 5 = 375
#include<iostream>
using namespace std;
int main()
{
int num1,num2; //默认 num1 > num2
cin>>num1>>num2;
int a=num1,b=num2;
while (a%b!=0)
{
int temp=a%b;
a=b;
b=temp;
}
cout<<"最大公约数:"<<b<<endl;
cout<<"最小公倍数:"<<num1*num2/b<<endl;
}
更多推荐
所有评论(0)