关于整数溢出问题求解
rgcyc 2010-07-12 11:41:51 样例输入
123456789 987654321
0 0
输出应该为
13548070123626141
但我的输出结果是
-7461446
结果显示溢出了,求问如何解决
#include <iostream>
using namespace std;
void change(int *a, int *b)
{
if(*a < *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
}
int gcd(int a, int b)
{
int temp;
change(&a, &b);
while(a%b != 0)
{
temp = a % b;
a = b;
b = temp;
}
return b;
}
int main()
{
long a, b,gcd_result,i = 0;
do{
cin >> a;
cin >> b;
gcd_result = gcd(a,b);
cout << (long)(a*b/gcd_result) << endl;
}while(a != 0 && b != 0);
return 0;
}