Лямбда-функция Excel, которая проверяет, является ли число простым

Создал функцию 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) 
        )
      ) 
    )
  )
)

Есть идеи, как это исправить?

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *