Ir ao conteúdo
  • Cadastre-se
Irwing Seiji Ato

VisualG Algoritmo para testar se o número é primo e mostrar o primo anterior

Posts recomendados

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
          se numero mod i = 0 entao
             escreva(" ",i)   // só deve achar um divisor: o numero 1
             cont <- cont+1    // cont vai ter valor 1
          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

Crie esse algoritmo porém quero mostrar, todos os números primos e mostrar o primo anterior a ele como deveria ser feito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Irwing Seiji Ato seu código está bom , mas também poderia  ser  assim  :

 

Algoritmo "NumerosPrimos"
Var
  Fatorial,Numero,x : Inteiro
  Primo,Resposta,y  : Inteiro
  Flag : Logico
inicio
  Limpatela
  Mudacor("Amarelo","Frente")
  Escreva("Deseja até que número primo: ")
  leia(Numero)
  Escreval
  Escreval
  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," ")
      se numero = primo entao
        y:=1
      fimse
      se y=0 entao
        x := primo // antepenúltimo número primo no intervalo
      fimse
    fimse
  fimpara
  escreval
  se y=1 entao
    escreval("O Número Primo Anterior A",numero," éh ",x)
  fimse
  Escreval
Fimalgoritmo

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora mostra o primo anterior caso o número seja primo porém não mostra o primo anterior, porém quando não é primo mostra dois números primos anteriores preciso que mostra somente 1 número anterior.

E também precisa remover o múltiplos de todos os números para otimizar o código para assim ir para outro caso seja múltiplo de um número

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010Acho que  para otimizar se fosse múltiplo seria muito custoso acho que seria melhor dar um break quando fatorial fosse 2 e para parar de fazer a divisão que no caso faria até o número digitado e caso fatorial fosse 2 dividiria o número digitado por ele mesmo e somaria no fatorial e se não fosse continuaria o mesmo procedimento, porém ainda assim o código precisa ser melhorado essa parte do caso o número fosse primo precisa melhorar pois dividiria até o número digitado seria bom se removesse os múltiplos mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Irwing Seiji Ato      no seu primeiro post você disse :

 

Em 11/03/2019 às 08:49, Irwing Seiji Ato disse:

Crie esse algoritmo porém quero mostrar, todos os números primos e mostrar o primo anterior a ele

então editei o código acima , para que ele imprima o primo anterior se o número digitado for primo , e se não for então não imprime nada ,  mas os múltiplos não precisam ser removidos basta não imprimi-los .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Junte-se à conversa

Você pode postar agora e cadastrar-se depois. Se você tem uma conta, faça o login para postar.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restore formatting

  Só é possível ter até 75 emoticons.

×   O link foi automaticamente convertido para mostrar o conteúdo.   Clique aqui para mostrá-lo como link comum

×   Seu texto anterior foi restaurado.   Limpar o editor

×   You cannot paste images directly. Upload or insert images from URL.






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!