我的功能不会 return 正确的值

My function won't return the proper value

我目前正在做 Euler 项目的问题 3,我在编写 returns 一个数的最大质因数的函数时遇到了 运行 问题。

我做了两个函数,isprime(number) 和 maxprime(number)。第一个函数工作得很好,如果数字是质数则返回 true,但是梯形图函数给了我问题。

function maxprime(number)
    maximum = 0
    for i = 2, number - 1 do
        if(number % i == 0 and isprime(i)) then
            if(maximum < i) then
                maximum = i
            end
        end
    end
    return maximum end
end

它每次都是 returns 0 而 for 循环似乎只有 运行 一次。我在这里做错了什么?

您确定您的 isPrime 函数在质数上 returning true 吗?您没有 post 您的 isPrime 函数是什么,因此很难判断它是否是罪魁祸首。

但是,我要指出的是,您不需要数到 n-1,相反,正如 tonypdmtr 评论中提到的,您可以从 n 开始并倒数。这样实际上更好,因为您将 return 第一个符合您条件的素数。请看下面的代码:

function isPrime(n)
    for i = 2, n^(1/2) do
        if (n % i) == 0 then
            return false
        end
    end
    return true
end

function maxPrime(n)
    for i = n, 2, -1 do
        if isPrime(i) and (n % i) == 0 then
            return i
        end
    end
end

> print(maxPrime(1449))
> 23
> print(maxPrime(7))
> 7
> print(maxPrime(13))
> 13

希望这对您有所帮助,但如果您有任何问题,请随时提出。