为什么我在编译时提示没有定义sqrt函数?
如图,但是我已经将math.h头文件包含进来了https://s2.ax1x.com/2020/01/18/1po0un.png 把代码发上来,或者截个图。
给你个图床链接:https://imgchr.com/ 代码如下:
#include <stdio.h>
#include <math.h>
int isPrime(const long long int n);
int isPrime(const long long int n)
{
int i;
if (n <= 1)
{
return 0;
}
else
{
if (n == 2)
{
return 1;
}
else if (!(n % 2))
{
return 0;
}
else
{
for (i = 3; i < (int)(sqrt((double)n))+1; i += 2) // 提示错误的地方
{
if (!(n % i))
{
return 0;
}
}
}
}
return 1;
}
int main()
{
unsigned long long i, j, k,num = 600851475143;
for (i = (num / 2); i > 1; i--)
{
if ((isPrime(i)) && !(num % i))
{
break;
}
}
printf("%lld\n", i);
return 0;
} zltzlt 发表于 2020-1-18 18:50
把代码发上来,或者截个图。
给你个图床链接:https://imgchr.com/
代码已经发了 zltzlt 发表于 2020-1-18 18:50
把代码发上来,或者截个图。
给你个图床链接:https://imgchr.com/
我刚才试了一下,发现我的math.h好像有问题
我试着调用pow函数,然后结果是
pow(2, 2) 的值是140729439682824
为什么会这样?
会不会是因为我用的是Kali? Suud 发表于 2020-1-18 19:43
我刚才试了一下,发现我的math.h好像有问题
我试着调用pow函数,然后结果是
pow(2, 2) 的值是140729439 ...
可能是,Windows 测试你的代码没问题。 zltzlt 发表于 2020-1-18 19:51
可能是,Windows 测试你的代码没问题。
那有什么补救的办法吗? 本帖最后由 Suud 于 2020-1-18 20:43 编辑
zltzlt 发表于 2020-1-18 19:51
可能是,Windows 测试你的代码没问题。
我好像知道了
编译时 -lm 要写在源文件后面
我写到前面去了
十分不好意思 Suud 发表于 2020-1-18 20:41
我好像知道了
编译时 -lm 要写在源文件后面
我写到前面去了
嗯,运行正常吗? zltzlt 发表于 2020-1-18 20:42
嗯,运行正常吗?
正常了 zltzlt 发表于 2020-1-18 20:42
嗯,运行正常吗?
十分感谢!
页:
[1]