Создал функцию Excel Lambda в диспетчере имен, чтобы проверить, является ли число простым, и назвал его ISPRIME.
Вызов его из Excel следующим образом: = ISPRIME (7) возвращает 1 = ISPRIME (6) возвращает 0
Но для диапазона не работает. Я создал другие функции LAMBDA, которые работают с диапазонами, но явно что-то не так с реализацией, когда аргумент представляет собой диапазон, содержащий несколько значений.
Учитывая диапазон A1: A2, содержащий значения 6 и 7, он возвращает 1 для обоих, что явно неверно.
=LAMBDA
(
vArg,
LET
(
v, INT(ABS(vArg)),
ev, ISEVEN(v),
half, 1/2,
high, INT(SQRT(v)+half),
seqLimit, 2^20,
IF
(
AND(ev, v<>2),
0,
IF
(
high>seqLimit,
-1,
LET
(
high, INT(SQRT(v)+1/2),
seq, v/SEQUENCE(1,high,1,2),
iSeq, INT(seq),
factors, seq*(seq=iSeq),
rFactors, FILTER(factors,(factors>1)*(factors<v),0),
sumFactors, SUM(rFactors)
--(sumFactors=0)
)
)
)
)
)
Есть идеи, как это исправить?