Suud 发表于 2020-1-18 18:44:26

为什么我在编译时提示没有定义sqrt函数?

如图,但是我已经将math.h头文件包含进来了
https://s2.ax1x.com/2020/01/18/1po0un.png

zltzlt 发表于 2020-1-18 18:50:35

把代码发上来,或者截个图。

给你个图床链接:https://imgchr.com/

Suud 发表于 2020-1-18 19:11:49

代码如下:
#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;
}

Suud 发表于 2020-1-18 19:19:28

zltzlt 发表于 2020-1-18 18:50
把代码发上来,或者截个图。

给你个图床链接:https://imgchr.com/

代码已经发了

Suud 发表于 2020-1-18 19:43:26

zltzlt 发表于 2020-1-18 18:50
把代码发上来,或者截个图。

给你个图床链接:https://imgchr.com/

我刚才试了一下,发现我的math.h好像有问题
我试着调用pow函数,然后结果是
pow(2, 2) 的值是140729439682824
为什么会这样?
会不会是因为我用的是Kali?

zltzlt 发表于 2020-1-18 19:51:36

Suud 发表于 2020-1-18 19:43
我刚才试了一下,发现我的math.h好像有问题
我试着调用pow函数,然后结果是
pow(2, 2) 的值是140729439 ...

可能是,Windows 测试你的代码没问题。

Suud 发表于 2020-1-18 19:56:11

zltzlt 发表于 2020-1-18 19:51
可能是,Windows 测试你的代码没问题。

那有什么补救的办法吗?

Suud 发表于 2020-1-18 20:41:33

本帖最后由 Suud 于 2020-1-18 20:43 编辑

zltzlt 发表于 2020-1-18 19:51
可能是,Windows 测试你的代码没问题。

我好像知道了
编译时 -lm 要写在源文件后面
我写到前面去了
十分不好意思

zltzlt 发表于 2020-1-18 20:42:06

Suud 发表于 2020-1-18 20:41
我好像知道了
编译时 -lm 要写在源文件后面
我写到前面去了

嗯,运行正常吗?

Suud 发表于 2020-1-18 20:43:32

zltzlt 发表于 2020-1-18 20:42
嗯,运行正常吗?

正常了

Suud 发表于 2020-1-18 20:44:02

zltzlt 发表于 2020-1-18 20:42
嗯,运行正常吗?

十分感谢!
页: [1]
查看完整版本: 为什么我在编译时提示没有定义sqrt函数?