Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Var
// Seção de Declarações das variáveis
Fatorial,Numero,x : Inteiro
Primo,Resposta : Inteiro
vetorr : vetor[0..1000] de inteiro
Flag : Logico
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
Limpatela
Mudacor("Amarelo","Frente")
Escreva("Deseja até que número primo: ")
leia(Numero)
Escreval
Escreva(" 1")
Para Primo de 2 ate Numero faca
Fatorial<- 2
Flag <- Falso
enquanto (Primo<>fatorial) faca
Resposta <- Primo MOD Fatorial
Fatorial <- Fatorial + 1
se Resposta = 0 entao
Flag <- Verdadeiro
fimse
fimenquanto
se (Nao Flag) entao
escreva(" , ",Primo)
vetorr[x] := primo
x := x + 1
fimse
fimpara
escreval
escreval
escreval("O Número Primo Anterior A ",numero," é ",vetorr[x-1])
O código ficou bom mas contém um erro o número 1 não é primo e preciso otimizá-lo ainda para ficar mais eficiente gostaria de quando você múltiplo de um número já removesse da contagem e passasse para o próximo número, pois quando é múltiplo já não é mais primo pois somente precisa ter 2 divisores exatos que no caso seria o 1 e o número digitado, a e outra falha no algoritmo tem que ser um número primo anterior e caso o número digitado seja primo deve informar o número primo anterior a este digitado
Carregando comentários...