Notifications
Clear all

Número Primo

8 Posts
3 Usuários
0 Reactions
2,461 Visualizações
(@lucas842)
Posts: 0
New Member
Topic starter
 

Pessoal, tudo bem?

Gostaria de resolver o seguinte problema através do Excel:

Dado um número numa célula do Excel, identificar se ele é número primo caso seja adicionar a ele 1 (uma) unidade, caso não seja, adicionar a ele 3 (três) unidades.

Número primo: que só é divisível por si mesmo e pela unidade (diz-se de número)

Como eu poderia resolver isso através do Excel? Alguma sugestão?

Desde já obrigado.

 
Postado : 14/11/2016 12:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Função definida pelo usuário para determinar se um número é primo ou não:

Function ÉPRIMO(c As Range) As Boolean

num = c.Value

If num = 1 Then
ÉPRIMO = False
ElseIf num = 2 Or num = 3 Then
ÉPRIMO = True
ElseIf num Mod 2 = 0 Then
ÉPRIMO = False
Else
d = (num + 1) / 2
i = 3

Do While i <= d
If num Mod i = 0 Then
cont = cont + 1
End If
If cont > 0 Then
ÉPRIMO = False
Else
ÉPRIMO = True
End If
i = i + 1
Loop
End If

End Function

 
Postado : 14/11/2016 2:04 pm
(@pfarias)
Posts: 0
New Member
 

Poderia especificar UNIDADE.

 
Postado : 14/11/2016 2:24 pm
(@pfarias)
Posts: 0
New Member
 

Entende de VBA?
Se a ideia é retornar o valor 1 ou 3. Então utiliza a função em VBA abaixo dentro de uma módulo:

Option Explicit

Function Primo(Numero As Integer) As Boolean
    Dim i, limite As Long

    Primo = True
    limite = Numero / 2
    
    For i = 2 To limite
        If Numero Mod i = 0 Then
        Primo = False
        Exit For
        End If
    Next

End Function

E depois um SE

Assim se for positivo resultado igual a 1, se negativo será 3.

Precisa de ajuda para colocar em prática?

 
Postado : 14/11/2016 2:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde lucas842

Não precisa VBA dá para fazer com formula.

Baixe a planilha e confira:

Se foi útil, clique na mãozinha.

Dê retorno.

[]s

 
Postado : 14/11/2016 2:55 pm
(@lucas842)
Posts: 0
New Member
Topic starter
 

Eu fiz um curso sobre isso, mas a parte de VBA foi abordada muito superficialmente. Se puder fazer um passo-a-passo do que devo fazer agradeço imensamente.

 
Postado : 14/11/2016 3:03 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 


Pessoal, excelentes as respostas!

Apenas cabe ajustar para a análise do número 1, que NÃO é primo.

 
Postado : 14/11/2016 3:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Apenas cabe ajustar para a análise do número 1, que NÃO é primo.

Para abranger o número 1, podemos fazer assim:

=SE(A2=1;A2+3;SE(SOMARPRODUTO(1*(MOD(A2;LIN(INDIRETO("1:"&INT(A2^0,5))))=0))=1;A2+1;A2+3))

Se foi útil, clique na mãozinha.

[]s

 
Postado : 14/11/2016 3:40 pm