用LUA刷PTA ——1015 Reversible Primes

踩的坑

1.题目意思是十进制数转化成对应进制后翻转,得到的数是不是素数,我看了好久为啥23是二进制数。
2.测试点1,1不是素数 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

代码

--IO
local read_func = io.read('*a'):gmatch('%p-%d+')

local read_number = function()
    return tonumber(read_func())
end

--logic 

local isPrime = function(number)
    for i = 2, math.floor(math.pow(number, 0.5)) do
        if number % i == 0 then
            return false
        end
    end
    return number ~= 1
end
    
local getReverse = function(number, redix)
    local convert_table = {}
    while number ~= 0 do
        table.insert(convert_table, number % redix)
        number = math.floor(number / redix)
    end
    local result = 0
    for _, v in pairs(convert_table) do
        result = result * redix + v;
    end
    return result
end

-- main

while true do
    local number = read_number()

    if number < 0 then
        break
    end

    local redix = read_number()
    local is_reverse = isPrime(number) and isPrime(getReverse(number, redix))

    print(is_reverse and "Yes" or "No")

end
上一篇:从Android中的地址获取纬度,经度


下一篇:大幅减少GPU显存占用:可逆残差网络The Reversible Residual Network