1个回答
展开全部
#include<iostream>
using namespace std;
int m,n;
int gcd(int u,int v)
{
int k=1,t;
while(~u&1 && ~v&1)k<<=1,u>>=1,v>>=1;
t=(u&1)?-v:u>>1;
do{
while(~t&1)t>>=1;
if(t>0)u=t;else v=-t;
}while(t=u-v);
return u*k;
}
int main()
{cin>>m>>n;
cout<<gcd(m,n)<<endl;//最大公约数
cout<<(m*n)/gcd(m,n)<<endl;//最小公倍数
return 0;}
using namespace std;
int m,n;
int gcd(int u,int v)
{
int k=1,t;
while(~u&1 && ~v&1)k<<=1,u>>=1,v>>=1;
t=(u&1)?-v:u>>1;
do{
while(~t&1)t>>=1;
if(t>0)u=t;else v=-t;
}while(t=u-v);
return u*k;
}
int main()
{cin>>m>>n;
cout<<gcd(m,n)<<endl;//最大公约数
cout<<(m*n)/gcd(m,n)<<endl;//最小公倍数
return 0;}
追问
看不懂,我想要低级一点,这些语言太高级了,if,while什么的可以用,就是gcd什么的就不要用了
追答
int gcd(int a,int b)//求最大公约数
{
if(a<b)
return gcd(b,a);
if(a%b==0)
return b;
return gcd(b,a%b);
}
gcd只是求两个数的最大公约数的函数而已,这个就写成了递归的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询