在C ++中内置__gcd(A,B)函数

时间:2015-06-17 17:37:52

标签: c++

最近我了解了c ++中的一个特殊功能:__gcd(A,B)。这将返回A和B的最大公约数。

#include<iostream>
#include<algorithm>
using namespace std;

main()
{
cout<<__gcd(10,40); //op: 10
}

使用2个下划线启动函数定义是否有任何特殊原因?

它可以像gcd(A,B)一样简单,就像其他STL函数一样。

2 个答案:

答案 0 :(得分:12)

以两个下划线开头的名称是为实现保留的,这意味着您不允许在代码中定义此类名称,并且没有标准保证这些名称在它们存在时的含义。但是,供应商可能会选择记录某些此类名称,在这种情况下,您可以将其与供应商记录的产品一起使用。

答案 1 :(得分:3)

在C ++ 17中,有针对GCD和LCM的标准库函数。

#include <iostream>
#include <numeric>

int main ()
{
    int a, b;
    std::cin >> a >> b;
    std::cout << std::gcd(a,b) << '\n';
    return (0);
}