基本上應該是沒有BUG,之前寫的時候,還出現過分母為零,導致程式嚴重錯誤的BUG。
修復了很久,終於完成,應該是沒有BUG了(吧)。
#include<iostream>
using namespace std;
int main()
{
int a,b,c,d=1,f,g,k,x,y;
cout << "Enter two number : "<<endl;
cin >> a >> b;
c=a;
d=b;
if( a <= b )
{
k=a;
a=b;
b=k;
}
if( a%b == 0 )
{
cout << "gcd = " << b <<endl;
cout << "lcm = " << a <<endl;
}
else
{
do
{
f = a%b;
if(f==0)
{
a=f;
break;
}
else
{
g = b%f;
a =f;
b =g;
}
}while(a!=0&&b!=0);
if(a!=0)
{
cout << "gcd = " <<a<<endl;
x = c/a;
y = d/a;
cout << "lcm = " <<x*y*a<<endl;
}
if(b!=0)
{
cout << "gcd = " <<b<<endl;
x = c/b;
y = d/b;
cout << "lcm = " <<x*y*b<<endl;
}
}
system("pause");
return 0;
}
載點:gcd lcm.exe
2012/12/9
功力更強的現在,少花了許多行(從63到35)就寫出來,其實還能用遞迴來縮短只是效率很差就算了。
#include<iostream>
using namespace std;
int gcd(int a,int b);
int main()
{
int i,j;
cout << "input two numbers"<<endl;
cin >> i >> j;
cout << gcd(i,j)<<endl;
system("pause");
return 0;
}
int gcd(int a,int b)
{
while(a!=0)
{
if(b>a) //if b < a ,cahnge a,b
{
int temp;
temp = a;
a = b;
b = temp;
}
a = a%b;
}
return b;
}
希望以後可以再更強。
2013/8/4
嘗試用遞迴寫作,果然很短。
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}