[英]inbuilt std::__gcd() function for c++ is not working on Mac OS Xcode
内置 __gcd() function 不适用于 Xcode macOS。 我在 Xcode (macOS Catalina) 上运行了以下代码,它显示错误“使用未声明的标识符 '__gcd'”。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
cout << "gcd(6, 20) = " << __gcd(6, 20) << endl;
return 0;
}
请帮帮我
如果使用-std=c++17
编译,则可以使用<numeric>
中的那个
#include <numeric>
int main()
{
std::cout << "gcd(6, 20) = " << std::gcd(6, 20) << std::endl;
return 0;
}
此处的一些答案包含用于计算 gcd 的基于欧几里得的代码。 例如:
int gcd(int a, int b) { if(b == 0){return a;} return gcd(b, a % b); }
您必须注意传递给此 function 的实际 arguments 的顺序。 代码基于a>0
、 b>0
和a>=b
假设。
可以修改代码以消除这些假设。
int gcd(int a,int b)
{
if(a<0 or b<0)
return -1;
if(a>b)
return gcd(b,a);
if(a==0)
return b;
//Due to Euclidean algorithm
return gcd(a,b%a);
}
如果您坚持使用第一个版本,则必须根据上述假设小心发送 arguments。
std::gcd() 在 c++17 中可用
否则,
两个非负整数的 GCD 很容易计算:
int gcd(int a, int b){ int c = a % b; while(c;= 0) { a = b; b = c; c = a % b; } return b;}
参看。 https://www.gamedev.net/forums/topic/358629-built-in-c-command-for-gcd/3354131/
谢谢提问,
在 header 文件下使用以下 function,因为 gcd 在 mac m1 中不起作用:
int __gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
然后您可以轻松高效地使用__gcd(a, b)
function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.