最大公约数代码
这个代码有几个注意事项
对于大型数据,考虑使用动态内存分配(如std::vector
),避免固定大小的数组可能导致的栈溢出
在寻找最大真因子时,只需要检查到sqrt(a)
,因为任何大于sqrt(a)
的因子都会与小于sqrt(a)
的因子配对
在gcd
函数中,直接使用a % b
而不是临时变量可以减少不必要的赋值操作
具体的代码如下
#include <iostream>
using namespace std;
long long gys(int a)
{
long long int i, j = 0;
long long int b[1000000001];
for(i = 2; i < a; i++)
{
if(a % i == 0)
{
b[j] = i;
j++;
}
}
return (j > 0) ? b[j-1] : 1;
}
long long gcd(long long a, long long b)
{
while (b != 0)
{
long long temp = b;
b = a % b;
a = temp;
}
return a;
}
int main()
{
long long int a, b;
cin >> a >> b;
long long int result = gcd(a, b);
cout << result << endl;
return 0;
}