Logo Hardware.com.br
diovana dombroski
diovana domb... Novo Membro Registrado
2 Mensagens 0 Curtidas

[Resolvido] Calcular os N primeiros números perfeitos em VBA

#1 Por diovana domb... 11/12/2020 - 17:03
Pessoal se alguém souber como me ajudar, preciso fazer este programa, consegui fazer ele identificar um numero perfeito, mas ele nao está aparecendo na ordem aqui está o que eu consegui fazer
(um número perfeito é um número inteiro para o qual a soma de todos os seus divisores positivos próprios (excluindo ele mesmo) é igual ao próprio número.) Por exemplo 6 é perfeito pois ele é a soma de 1 , 2, 3.
CODIGO VBA

[code=vb]Function EhPrimo(numero As Long) As Boolean ' Função para verificar se o número é primo
Dim i As Long, j As Long
Dim r As Boolean
r = True


For i = 2 To numero - 1
If numero Mod i = 0 Then
r = False
Exit For
Else

End If
Next

EhPrimo = r
End Function

Sub NumeroPerfeito()
Dim n As Single
Dim i As Long
Dim r As Single
Dim T As Long
Dim j As Long

n = Cells(10, 1).Value

If n >= 1 Then

For i = 1 To n

T = ((2 ^ i) - 1)

If EhPrimo(T) = True Then
Cells(12 + i, 1).Value = (2 ^ (i - 1)) * ((2 ^ i) - 1)



Else

End If

Next
End If
End Sub[/code]

Ele resolve assim, nao aparece os 10 primeiros
Anexo do post

Anexos

esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#3 Por esquiloesper...
12/12/2020 - 08:49
A causa deste problema está no uso da variável "i" para tudo.

Percebe que outras variáveis foram declaradas, porém sem utilização alguma; Que tal usar então a variável "j" pra te salvar? Veja:
[code=vb]i = 1
j = 1
Do Until j > 10
T = ((2 ^ i) – 1)
If EhPrimo(T) = True Then
Cells(12 + j, 1).Value = (2 ^ (i – 1)) * ((2 ^ i) – 1)
j = j + 1
i = i + 1
Loop
[/code]

Use este código no lugar do "FOR".

Também poderia inicializar as suas variáveis i, j diretamente iguais a 1, para economizar as duas primeiras linhas mostradas aqui.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2025 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal