踩的坑
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