用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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值