ثامر أبو بلقيس
17-12-2016, 05:10 PM
بسم الله الرحمن الرحيم
الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين
السلام عليكم ورحمة الله وبركاته
-------------------
بصدد إنجـــاز وسيلة (آداة) رياضية مهمتها تحليل عدد إلى جداء عوامله الأولية
مثلا : العدد 1250 بالتحليل = 5^4 * 2^1
خذ أنبوت 1 لتكتب فيه العدد
و الانبوت2 لإظهار النتائج على أن نزرع الكود التالي في Input1 في الحدث on Char
X=Input.GetText("Input1");
X = String.ToNumber(X);
tblNames = {}
x=1
function primdiv(n)
assert(n ~= 0)
if n < 0 then n = -n end
local function f(_, v)
if n > 1 then
while n%v > 0 do
v = v + (v == 2 and 1 or 2)
if v*v > n then v = n end
end
n = n / v
return v
end
end
return f,nil,2
end
for p in primdiv(X) do
Table.Insert(tblNames, x, p);
x=x+1
end
local sResult = ""
local sNames = table.concat(tblNames,"%|%")
for i = 1, #tblNames do
local _,n = string.gsub(sNames,tblNames[i],"")
local sline = string.format("%s^%d X ",tblNames[i],n)
local _,d = string.gsub(sResult,sline,"")
if (d == 0) then
sResult = sResult .. sline
end
end
Input.SetText("Input2", X.." = "..String.Mid(sResult, 1, #sResult-2));
كتبت الاكواد كتابة تفاديا لتعطل روابط التحميل لمن رغب في ذلك
مــــوفق
الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين
السلام عليكم ورحمة الله وبركاته
-------------------
بصدد إنجـــاز وسيلة (آداة) رياضية مهمتها تحليل عدد إلى جداء عوامله الأولية
مثلا : العدد 1250 بالتحليل = 5^4 * 2^1
خذ أنبوت 1 لتكتب فيه العدد
و الانبوت2 لإظهار النتائج على أن نزرع الكود التالي في Input1 في الحدث on Char
X=Input.GetText("Input1");
X = String.ToNumber(X);
tblNames = {}
x=1
function primdiv(n)
assert(n ~= 0)
if n < 0 then n = -n end
local function f(_, v)
if n > 1 then
while n%v > 0 do
v = v + (v == 2 and 1 or 2)
if v*v > n then v = n end
end
n = n / v
return v
end
end
return f,nil,2
end
for p in primdiv(X) do
Table.Insert(tblNames, x, p);
x=x+1
end
local sResult = ""
local sNames = table.concat(tblNames,"%|%")
for i = 1, #tblNames do
local _,n = string.gsub(sNames,tblNames[i],"")
local sline = string.format("%s^%d X ",tblNames[i],n)
local _,d = string.gsub(sResult,sline,"")
if (d == 0) then
sResult = sResult .. sline
end
end
Input.SetText("Input2", X.." = "..String.Mid(sResult, 1, #sResult-2));
كتبت الاكواد كتابة تفاديا لتعطل روابط التحميل لمن رغب في ذلك
مــــوفق