Ir para conteúdo
Fórum Script Brasil
  • 0

gadnlino

Pergunta

Escrevi um algoritmo para verificar se um número é primo ou não,de acordo com a 1ª imagem que eu anexei.

O algoritmo roda tranquilo quando eu digito uns números pequenos(5,5,11),mas quando eu digito números grandes,o visualg trava,e eu sou obrigado a fechá-lo.

Alguém sabe porque ocorre esse problema?(na segunda imagem eu digitei o número 123456789)

problema viaualg.jpg

problema visualg 2.jpg

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

É bem provável que vá travar mesmo, afinal com 123456789 você manda ele fazer mais de 123 milhões de iterações. Mas você pode fazer algumas coisas para diminuir essa quantidade de iterações, mesmo com números grandes:

1) Coloque um...

se contador > 2 então
    interrompa
fimse

... dentro do seu para, pois assim que for encontrado mais de 2 divisores (contador>2) ele já vai imediatamente interromper o loop (e não precisará testar os outros 123 milhões).

2) Você pode testar se o número é par ou ímpar, já que sabe-se que o único primo par é 2, e todos os demais serão ímpares. Ou seja, logo de cara você já poderia descartar todos os pares diferentes de 2.

3) Você só precisa testar a divisão do número por todos os divisores até a raíz quadrada do próprio número (usando a função sqrt() ou raizq()). Para um número de 123456789 você testaria "apenas" até o divisor de 11111 (aproximadamente).

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...