ثامر أبو بلقيس
26-11-2014, 06:41 PM
السلام عليكم ورحمة الله وبركاته
بإختصار الأعداد الأولية الدائرية هي كل الأعداد الني تحقق قلب في أرقامها
وتبقى أولية
مثلا : لحساب الأعداد التي ستحقق هذه الخاصية إلى غاية العدد 1000000
سنجد 55 عددا كيف أحصل عليها ؟
موفق :abc_138:
tam=""
local floor = math.floor
local sqrt = math.sqrt
function printf(fmt, ...) io.stdout:write(string.format(fmt, ...)) end
local bel = 1000000
-------------------------------------------------------------------------------
function func_1(bel)
local kiss = { 2 }
local yes = { [2] = true }
for n = 3, bel, 2 do
yes[n] = true
end
for n = 3, bel, 2 do
if yes[n] then
for j = n + n, bel, n do
yes[j] = nil
end
kiss[#kiss + 1] = n
end
end
return kiss, yes
end
local kiss, yes = func_1(bel)
printf('%u total kiss below %u.\n', #kiss, bel)
-------------------------------------------------------------------------------
function func_2(n)
local noo = 0
while n >= 1 do
n = n / 10
noo = noo + 1
end
return noo
end
-------------------------------------------------------------------------------
local that = {}
local is_circ = {}
-------------------------------------------------------------------------------
function func_4(p)
if not is_circ[p] then
is_circ[p] = true
that[#that+1] = p
end
end
-------------------------------------------------------------------------------
function func_3(p, noo)
local abou = { p }
for i = 1, noo - 1 do
local lsd = p % 10
p = (p - lsd) / 10
p = p + (lsd * (10 ^ (noo - 1)))
abou[#abou + 1] = p
if not yes[p] then
return false
end
end
print(abou[1])
for _, r in ipairs(abou) do
func_4(r)
end
return true
end
for _, p in ipairs(kiss) do
if not is_circ[p] then
func_3(p, func_2(p))
end
end
for bb , yy in pairs (that) do
tam=tam..yy.." "
end
Dialog.Message("Notice", tam);
بإختصار الأعداد الأولية الدائرية هي كل الأعداد الني تحقق قلب في أرقامها
وتبقى أولية
مثلا : لحساب الأعداد التي ستحقق هذه الخاصية إلى غاية العدد 1000000
سنجد 55 عددا كيف أحصل عليها ؟
موفق :abc_138:
tam=""
local floor = math.floor
local sqrt = math.sqrt
function printf(fmt, ...) io.stdout:write(string.format(fmt, ...)) end
local bel = 1000000
-------------------------------------------------------------------------------
function func_1(bel)
local kiss = { 2 }
local yes = { [2] = true }
for n = 3, bel, 2 do
yes[n] = true
end
for n = 3, bel, 2 do
if yes[n] then
for j = n + n, bel, n do
yes[j] = nil
end
kiss[#kiss + 1] = n
end
end
return kiss, yes
end
local kiss, yes = func_1(bel)
printf('%u total kiss below %u.\n', #kiss, bel)
-------------------------------------------------------------------------------
function func_2(n)
local noo = 0
while n >= 1 do
n = n / 10
noo = noo + 1
end
return noo
end
-------------------------------------------------------------------------------
local that = {}
local is_circ = {}
-------------------------------------------------------------------------------
function func_4(p)
if not is_circ[p] then
is_circ[p] = true
that[#that+1] = p
end
end
-------------------------------------------------------------------------------
function func_3(p, noo)
local abou = { p }
for i = 1, noo - 1 do
local lsd = p % 10
p = (p - lsd) / 10
p = p + (lsd * (10 ^ (noo - 1)))
abou[#abou + 1] = p
if not yes[p] then
return false
end
end
print(abou[1])
for _, r in ipairs(abou) do
func_4(r)
end
return true
end
for _, p in ipairs(kiss) do
if not is_circ[p] then
func_3(p, func_2(p))
end
end
for bb , yy in pairs (that) do
tam=tam..yy.." "
end
Dialog.Message("Notice", tam);