LUA脚本中O(2)级素数查询

--======================================================================================================
  local set={[1]=2,[2]=3,[3]=5,[4]=7,[5]=11,[6]=13,[7]=17,[8]=19,[9]=23,[10]=29,[11]=31,[12]=37,[13]=41,[14]=43,[15]=47,[16]=53,[17]=59,[18]=61,[19]=67,[20]=71,[21]=73,[22]=79,[23]=83,[24]=89,[25]=97,[26]=101};
  local reverse={[2]=1,[3]=2,[5]=3,[7]=4,[11]=5,[13]=6,[17]=7,[19]=8,[23]=9,[29]=10,[31]=11,[37]=12,[41]=13,[43]=14,[47]=15,[53]=16,[59]=17,[61]=18,[67]=19,[71]=20,[73]=21,[79]=22,[83]=23,[89]=24,[97]=25,[101]=26};
 
  ngx.say("当前值是:7,下一个质数是:"..set[reverse[7]+1]);
  ngx.say("当前值是:23,下一个质数是:"..set[reverse[23]+1]);
  ngx.say("当前值是:41,下一个质数是:"..set[reverse[41]+1]);

  ngx.say("=====================================");
  for key, value in pairs(set) do  
      ngx.say("key:"..key..",value:"..value);  
  end 
  ngx.say("=====================================");
  for key, value in pairs(reverse) do  
      ngx.say("key:"..key..",value:"..value);  
  end 
  --======================================================================================================
 --[[
function newset()
    local reverse = {} --以数据为key,数据在set中的位置为value
    local set = {};  
    --一个数组,其中的value就是要管理的数据
    return setmetatable(set,{__index = {
          insert = function(set,value)
              if not reverse[value] then
                    table.insert(set,value)
                    reverse[value] = table.getn(set)
              end
          end,

          remove = function(set,value)
              local index = reverse[value]
              if index then
                    reverse[value] = nil
                    local top = table.remove(set) --删除数组中最后一个元素
                    if top ~= value then
                        --若不是要删除的值,则替换它
                        reverse[top] = index
                        set[index] = top
                    end
              end
          end,

          find = function(set,value)
              local index = reverse[value]
              return index;
          end,
    }})
end

local n = newset();
n:insert(5);]] 
原文地址:https://www.cnblogs.com/littlehb/p/4145717.html