最大公约数代码

这个代码有几个注意事项

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

}

全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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