Atenção: Precisando de assessoria nos seus PROJETO entre em contato com a SGP
E-mail: ajudastrabalhosprogramacao@gmail.com
Algoritmo
Numero Primo (Visualg)
Na
lista de exercícios da disciplina de algoritmo tem a seguinte questão:
Fazer
um programa que leia um numero digitado pelo usuário e exibir uma mensagem
informando se o numero digitado é primo ou não.
Bem, números primos são aqueles que são divisíveis somente por ele mesmo e por um, a partir dessa afirmação já podemos formular algumas perguntas para montar a lógica da questão: Como saber se um numero é divisível por ele mesmo e por um? Como saber se ele não divisível pelos demais números? Uma das formas de se responder a essas perguntas seria pegar esse numero e dividi-lo por ele mesmo e depois por todos os números antecessores a ele até chegar a um (ou começar do um até chegar ao numero). Dessa forma podemos ver todos os divisores desse numero (aqueles números os quais a divisão não deixa resto) e depois contá los, como o numero primo só tem como divisor ele mesmo e um, então se o numero tiver somente dois divisores ele é primo, se tiver mais de dois, não é primo. No visualg ficou assim:
algoritmo
"NumerosPrimos"
//
Função : Verificar se um numero é primo ou não.
//
Autor : ajudastrabalhos
//
Data : 09/03/2020
//
Seção de Declarações
var
numero,
i, cont :inteiro
inicio
escreval("digite
um numero: ")
leia(numero)
para
i de 1 ate numero faca
se numero mod i = 0 entao
fimpara
se
cont = 2 entao
escreval("o numero", numero,"
e primo!")
senao
escreval("o numero", numero,"
NAO e primo!")
fimse
fimalgoritmo
Nesse
algoritmo foi usada a variável 'i' para representar os números antecessores do
numero digitado e a variavel 'cont' para contar o numero de divisores do numero
digitado. Esse algoritmo pode ser melhorado, de forma que mostre quais são os
divisores do numero digitado:
algoritmo
"NumerosPrimos"
//
Função : Verificar se um numero é primo ou não.
//
Autor : ajudastrabalhos
//
Data : 09/03/2020
//
Seção de Declarações
var
numero,
i, cont :inteiro
inicio
escreval("digite
um numero: ")
leia(numero)
escreval("os
divisores do numero ",numero," sao: ") // apresentar os
divisores
para
i de 1 ate numero faca
se numero mod i = 0 entao
fimse
i <- i+1
fimpara
escreval() // pular
se
cont = 2 entao
escreval("o numero", numero,"
e primo!")
senao
escreval("o numero", numero,"
NAO e primo!")
fimse
fimalgoritmo
Esse
algoritmo roda bem com números não muito grandes, porém se o usuário digitar,
por exemplo, 12000 ou um numero maior o visualg já demora um pouco para
executar, isso por que no loop (comando para) vai ser executado um numero maior
de passos, um custo maior de processamento. Então um possível solução seria
diminuir o numero de antecessores, pois se o usuário digitar 12000, será feita
12000 divisões, mas dentro do intervalo de 1 a 10 podemos dividir todos o
números "grande" por todos os números do intervalo para encontrar
alguns divisores, mas se for encontrado apenas um divisor, o numero 1, então
esse numero "grande" é um numero primo, mas isso é só um
"jeitinho" que funcionou com alguns números:
algoritmo
"NumerosPrimos"
//
Função : Verificar se um numero é primo ou não.
//
Autor : ajudastrabalhos
//
Data : 09/03/2020
//
Seção de Declarações
var
numero,
i, cont :inteiro
inicio
escreval("digite
um numero: ")
leia(numero)
se
numero = 1 entao
escreval("o numero ",numero,"
NAO e primo!")
senao
escreval("os divisores do numero
",numero," sao: ")
se numero <= 10 entao // se o numero for ate 10 divide pelos
antecessores:
para i de 1 ate numero faca
se numero mod i = 0 entao
escreva(" ",i)
cont <- cont+1
fimse
i <- i+1
fimpara
senao
// sefor maior que 10 divide pelos antecessores de 1 a 10:
para i de 1 ate 10 faca
fimse
i <- i+1
fimpara
cont <- cont+1 // aumentar para poder exibir a mensagem
escreva(numero) // para exibir o próprio numero depois do 1
fimse
escreval() // pula um linha
se cont = 2 entao
escreval("o numero",
numero," e primo!")
senao
escreval("o numero",
numero," NAO e primo!")
fimse
fimse
fimalgoritmo
Atenção: Precisando de ajuda entre em contato com a SGP e solicite uma assessoria com a melhor equipe do mercado no desenvolvimento de trabalhos acadêmicos
E-mail: ajudastrabalhosprogramacao@gmail.com
Facebook: fb.me/ajudaemTrabalhosdeprogramacao
0 comentários:
Postar um comentário