FUNCAO NO VBA
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
to com maior duvida nao estou conseguindo se alguem poder me dar alguma dica agradeço
vlw deste ja
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.
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.
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
espero ter ajudado
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
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...
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
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
Uma planilha cheia de calculos de números primos, talvez tenha nela oq vc precisa.
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
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