Module Module1 Sub Main() 'Exibi uma mensagem na tela Console.Write("Defina um número:") 'Recebe o número digitado Dim NumeroDigitado As Integer = Console.ReadLine 'Cria uma array Dim ArrayNumerosPrimos As New ArrayList 'Inicia um for de 1 até o numero digitado For i = 1 To NumeroDigitado 'Chama a função que deteca se o número é primo Dim NumeroPrimo As Boolean = DetectaNumerosPrimos(i) 'Condição para saber se o número é primo If NumeroPrimo = True Then 'Adiciona a array se o número for primo ArrayNumerosPrimos.Add(i) End If Next 'Chama a função que detecta qual é a soma que compõe o número digitado Dim SomaNumerosPrimos As String = DetectarSomaNumerosPrimos(NumeroDigitado, ArrayNumerosPrimos) 'Exibi o resultado Console.WriteLine(SomaNumerosPrimos) 'Pede para precionar tecla para terminar o programa Console.ReadKey() End Sub 'Função que pede o número a ser testado como parâmetro Function DetectaNumerosPrimos(ByVal _NumeroPrimo As Integer) As Boolean 'Inicia uma variável que armazenara o número de divisões que o número consegue fazer Dim Quantidade_Divisoes As Integer = 0 'For que vai de 1 até o Número do parâmetro For a = 1 To _NumeroPrimo 'Condição para saber se a divisão tem resto = 0 If ((_NumeroPrimo Mod a) = 0) Then 'Incrementa a variável que conto a quantidade de divisões possíveis Quantidade_Divisoes += 1 End If Next 'Condição para saber se as divisões são igual a 2 If Quantidade_Divisoes = 2 Then 'Retorna positivo ao teste Return True End If Return Nothing End Function 'Função que pede o número digitado e uma array de números primos como parâmetros Function DetectarSomaNumerosPrimos(ByVal _NumeroDigitado As Integer, ByVal _ArrayNumerosPrimos As ArrayList) As String 'Cria um loop de todos os números primos da array For Each PrimoAtual In _ArrayNumerosPrimos 'Cria um outro loop dentro de um existente For Each _PrimoAtual In _ArrayNumerosPrimos 'Compara se a soma dos 2 números é igual ao número digitado If (PrimoAtual + _PrimoAtual) = _NumeroDigitado Then 'Retorna a soma correta Return (PrimoAtual & " + " & _PrimoAtual) 'Finaliza o loop Exit For End If Next Next Return Nothing End Function End Module