最大公约数代码

这个代码有几个注意事项

对于大型数据,考虑使用动态内存分配(如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;

}

全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务