Pages

terça-feira, 19 de janeiro de 2021

Algoritmo Numero Primo (Visualg)

Atenção: Precisando de assessoria nos seus PROJETO entre em contato com a SGP

E-mail: ajudastrabalhosprogramacao@gmail.com

Whats: (15) 99704-0447

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 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

 
Copyright © 2023 2m Assessoria Academica todos os direitos reservados.
Contato para trabalhos: assessoria.academica2m@gmail.com - WhatsApp: (15) 98115 - 0680