我的功能不会 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
希望这对您有所帮助,但如果您有任何问题,请随时提出。
我目前正在做 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
希望这对您有所帮助,但如果您有任何问题,请随时提出。