C++最小公倍数を実現
884 ワード
最小公倍数=2乗/最大公約数
最小公約数を求めて欧得数里アルゴリズム(つまり伝説の転がり相殺法)を使うことができます
使用することもできます(この2つの方法の原理は同じです)
2つの数の積が整数の範囲を超える場合があるので、a/gcd(a,b)*bの順序を調整することができます.
先に取り除くと、ある程度オーバーフローを避けることができます
最小公約数を求めて欧得数里アルゴリズム(つまり伝説の転がり相殺法)を使うことができます
int gcd(int a,int b)
{
if(b==0)
return a;
return
gcd(b,a%b);
}
使用することもできます(この2つの方法の原理は同じです)
int gcd(int x,int y)
{
while(x!=y)
{
if(x>y) x=x-y;
else
y=y-x;
}
return x;
//
}
2つの数の積が整数の範囲を超える場合があるので、a/gcd(a,b)*bの順序を調整することができます.
先に取り除くと、ある程度オーバーフローを避けることができます
#include
#include
#include
#include
using namespace std;
int gcd(int,int);
int main(int argc,char *argv[])
{
int x,y;
while(cin>>x>>y)
{
cout<y) x=x-y;
else
y=y-x;
}
return x;
//
}