FUNCAO NO VBA

POTAOO 08/05/2012 13:15:57
#401546
elabore uma funçao que entre com 2 numeros e retorna a soma de todos numeros primos q existem entre eles

to com maior duvida nao estou conseguindo se alguem poder me dar alguma dica agradeço
vlw deste ja
KERPLUNK 08/05/2012 14:05:23
#401553
Ta me parecendo exercício de curso ou faculdade...

Bem, o que você vai fazer na função, é estabelecer o intervalo entre os dois números passados como parâmetro em um loop ou for...next. Em seguinda (de preferência) criar uma outra função que retorne true caso o número seja primo e false caso não seja. Para cada número do intervalo, teste-o nessa função(com certeza existem várias por aqui que fazem isso) Se esse número for primo, adicione em uma collection ou array que vai ser o retorno. Depois do loop terminado, retorne a collection ou array, simples assim.
FILMAN 08/05/2012 21:18:18
#401588
Resposta escolhida
Primeiramente lembrabdo que os numeros primos são aqueles numeros
que podem ser divididos por 1 ou por ele mesmo

Mais na matemática todos os numeros são divisiveis por 1 então só precisamos saber se o numero é divisivel por ele mesmo
mais como fazer isso? verificando se qualquer numero anterior a ele é divisivel

A lógica seria é assim


Dim num1, num2 As String, soma As Integer

[ô]Criando uma função que retorna o valor do numero primo caso seja primo
Private Function verPrimo(ByVal N As Integer) As Integer
Dim i, s As integer, bool As Boolean
s = 0
bool = False
For i = Int(num)-1 To 2 Step -1
if (N mod i) = 0 Then
bool = True
Exit For
End If
Next i
If Not bool Then s = N
verPrimo = s
End Function

Soma = 0
num1 = inputBox([Ô]Digite o primeiro numero[Ô])
num2 = inputBox([Ô]Digite o segundo numero[Ô])

soma = soma + verPrimo(CInt(num1))
soma = soma + verPrimo(CInt(num2))

msgbox [Ô]A soma dos numeros primos é: [Ô] CStr(Soma), VbOKOnly + VbInformation



espero ter ajudado
KERPLUNK 09/05/2012 09:54:31
#401616
FILMAN, tenho que discordar. Números primos são aqueles que são divisíveis apenas por 1 e por ele mesmo e NENHUM outro número. Por exemplo, pode não parecer mas 1999 é um número primo, estranho pensar que um número tão [Ô]grande[Ô] não tenha nenhum divisor exato entre 0 e 1999; Infelizmente a fórmula matemática para achar números primos é MUUUITO complicada e até hoje não a entendi direito e por isso não consegui colocá-la em uma linguagem. A fórmula é essa figura ae em cima...
IRENKO 09/05/2012 10:20:05
#401618
Veja se ajuda:

Function e_primo(numero As Integer) As Boolean
Dim i, limite As Integer
eh_primo = True
limite = numero / 2
For i = 2 To limite
If numero Mod i = 0 Then
eh_primo = False
Exit For
End If
Next
End Function

Function PRIMOS(x As Integer) As String
For i = 2 To x
If x Mod i = 0 Then
If x <> i Then
PRIMOS = [Ô]NÃO é PRIMO[Ô]
Exit Function
Else
PRIMOS = [Ô]é PRIMO[Ô]
Exit Function
End If
End If
Next i
End Function
IRENKO 09/05/2012 10:22:57
#401619
Uma planilha cheia de calculos de números primos, talvez tenha nela oq vc precisa.
KERPLUNK 09/05/2012 10:58:12
#401622
Bem, uma função bem simples para ver se o número é primo seria:
Function IsPrime(int1 As Double) As Boolean
switch1 = False
For i = 2 To int1 - 1
switch1 = IIf(int1 Mod i > 0, False, True)
If switch1 = True Then Exit For
Next i
IsPrime = Not switch1
End Function
Tópico encerrado , respostas não são mais permitidas