2009-01-20 91 views
1

試圖執行一個小的Lua腳本,但不幸的是我做錯了什麼。我沒有更多的想法可能是什麼故障。Lua - if語句中的語法錯誤

function checkPrime(n) 
    for i = 2, n-1, 1 do 
     if n % i == 0 then 
      return false 
     end 
    end 
    return true 
end 

的解釋說:

lua: /home/sebastian/luatest/test.lua:3: `then' expected near `%' 

我認爲這不是一個大的事情,也許是很清楚什麼是錯的。但不知何故,我目前看不到它。

+0

在不相干的筆記上,當你想檢查一個數是否爲素數時,檢查根到math.floor(math.sqrt(n))n-1的instad足夠了。 – 2009-01-20 21:22:00

+0

沒錯,但我只用腳本來衡量不同腳本語言的執行時間。 – okoman 2009-01-22 14:34:04

回答

5

可能存在一些版本問題,請檢查您的lua版本。 '%'作爲模數的中綴運算符的用法只能在Lua 5.1中使用,在5.0中還不支持。嘗試使用math.mod代替:

if math.mod(n,i) == 0 then 

編輯:還要注意的是在5.1,math.mod仍然存在,但它已更名爲math.fmod。目前,舊名稱仍然有效,但支持將可能在未來的版本中被刪除。

-1

你有沒有試過用括號括起「n%i == 0」?愚蠢的問題,但有時被忽視!

+0

括號內?但那是一個字符串。正如我所看到的那樣,LUA不會評估它或... – okoman 2009-01-20 20:46:05