Fórmula do Excel para mostrar o menor divisor de um número

1

Até agora consegui imprimir o número se for primo ou "" caso contrário:

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

É possível alterar a fórmula para imprimir o menor divisor de um número, se for composto?

    
por Stepan 11.09.2018 / 15:30

1 resposta

3

O teste de AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0) está retornando qualquer número que não seja dividido uniformemente em outro número. Então, nós queremos o oposto:

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

Mas queremos o número mínimo onde isso é verdade:

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

Coloque isso no lugar do falso do IF interno.

Irá de 2 para o sqrt do número e retornará o valor mínimo que se divide uniformemente nesse número.

então:

=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))))))

Esta é uma fórmula de matriz e deve ser confirmada com Ctrl-Shift-Enter em vez de Enter ao sair do modo de edição.

    
por 11.09.2018 / 15:46