1

До сих пор я был в состоянии напечатать число, если это простое или "" иначе:

=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),A2,""))

Можно ли изменить формулу для вывода наименьшего делителя числа, если оно составное?

1 ответ1

3

Вы проверяете AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0) возвращает любое число, которое не делится поровну на другое число. Итак, мы хотим обратного:

MOD(A3,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0))))=0

Но мы хотим минимальное число, где это правда:

MIN(IF(MOD(A3,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0))))=0,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0)))))

Поместите это вместо ложного внутреннего IF.

Он будет перебирать от 2 до sqrt числа и возвращать минимальное значение, которое равномерно делится на это число.

так:

=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),A2,MIN(IF(MOD(A2,ROW(INDIRECT("2:" & A2)))=0,ROW(INDIRECT("2:" & A2))))))

Это формула массива, которая должна быть подтверждена с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .