gpt4 book ai didi

c - 如何求一个数的原根

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:48 25 4
gpt4 key购买 nike

这是我为寻找原根而尝试编译的代码……但它给我的错误是。

int isPrimitive (int q, int a) {
int i,z;
double k,s;

s=1;
i=0;

double *factors=malloc(sizeof(double)*q-2);

while (s>0 && i<q-2) {
k=pow(a,i);
s=k-(q*floor(k/q));
for (z=0;z<(sizeof(*factors)/sizeof(factors[0]));z++) {
if (factors[z]==s) {
return 0;
}
}
factors[i]=s;
i++;
}

这里是 double *factors=malloc(sizeof(double)*q-2);//出现从 void* 到 double* 的错误无效转换。

最佳答案

问题几乎可以肯定是在 C 代码上使用 C++ 编译器。在 C 中,void* 无需强制转换即可转换为任何指针类型,而在 C++ 中则不然,因此会出现错误消息。基本上有两种解决方案:使用 C 编译器(例如 gcc 而不是 g++),或者转换 malloc 的结果。

后者可以通过以下方式完成:

double *factors = static_cast<double*> (malloc(sizeof(double)*(q-2)));

但如果您实际上是在编写 C++,则使用 new []语法更好:

double *factors = new double [q-2];

(请注意,这需要使用 delete[] factors 而不是 free(factors))

关于c - 如何求一个数的原根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10311251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com