Два быстрых вопроса (надеюсь ...) со следующим кодом. Приведенный ниже скрипт проверяет, является ли число простым, и если нет, возвращает все факторы для этого числа, в противном случае он просто возвращает это число простое. Не обращай внимания на з.ы. материал в сценарии, поскольку это зависит от клиента и не имеет отношения к функциональности сценария.
Сам сценарий работает почти замечательно, за исключением двух незначительных деталей - первая из них состоит в том, что список факторов не возвращает себя отсортированным ... то есть для 24 он возвращает 1, 2, 12, 3, 8 , 4, 6 и 24 вместо 1, 2, 3, 4, 6, 8, 12 и 24. Я не могу напечатать его в виде таблицы, поэтому его нужно вернуть в виде списка. Если он должен быть отсортирован в виде таблицы, ТОГДА превращенной в список, я могу с этим справиться. Все, что имеет значение, является конечным результатом, являющимся списком.
Другая деталь в том, что мне нужно проверить, есть ли в списке только два числа или больше. Если есть только два числа, это простое число (1 и число). Текущий способ у меня это не работает. Есть ли способ сделать это? Я ценю всю помощь!
function get_all_factors(number)
local factors = 1
for possible_factor=2, math.sqrt(number), 1 do
local remainder = number%possible_factor
if remainder == 0 then
local factor, factor_pair = possible_factor, number/possible_factor
factors = factors .. ", " .. factor
if factor ~= factor_pair then
factors = factors .. ", " .. factor_pair
end
end
end
factors = factors .. ", and " .. number
return factors
end
local allfactors = get_all_factors(zs.param(1))
if zs.func.numitems(allfactors)==2 then
return zs.param(1) .. " is prime."
else
return zs.param(1) .. " is not prime, and its factors are: " .. allfactors
end