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

(Resolvido) C/C++ Numeros primos


Giza

Pergunta

Olá,

Estou fazendo um programa para ver se o numero informado é primo ou não.

Estou confussa, não consigo achar o erro. Abaixo parte do codigo que acho que está o erro.

aux=1;
for(i=2;num>=i;i++){
     if(num%i==0)
        aux=0;
}
if(aux==0){
  puts("é primo");
  }else
         puts("não é primo");
}

Se alguém puder me ajudar, Obrigada.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Vê se esse código funciona ai:

#include <stdio.h>
#include <math.h>

int main ()
{
    int num = 3; /// Numero para verificar se é primo
    int aux=1;
    
    if(num % 2 != 0)
    {    
        for(int i = 3; i < sqrt(num); i = i + 2)
        {
            if(num % i==0)
            {
                aux = 0;
                break;
            }        
        }
    }
    
    if(aux == 0) printf("não e primo");
        else printf("E primo");
}

Basta você verificar primeiro se é divisível por 2, senão verifica para os ímpares até a raiz quadrada do número.

Assim o código fica mais rápido quando testamos para números grandes.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Só lembrando que a fim de evitar o cálculo repetido da raiz quadrada é recomendável salvar em uma variável. Evite utilizar funções em loops a não ser que seja necessário.

Ao invés de:

for(int i = 3; i < sqrt(num); i = i + 2)
Você pode escrever:
int raiz=sqrt(num);
for(int i = 3; i < raiz; i = i + 2)

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite,

Graças!!!

Com as dicas de vocês consegui fazer rodar perfeitamente, o q levou menos de um minuto para consertar.

Para de repente ajudar mais alguém que tenha a mesma duvida vou postar o codigo pronto abaixo, claro, é

um codigo de iniciante..rsrss, mais funciona. Numeros primos informados só entre 1 e 100000.

Obrigada

Abraços.

#include <cstdlib>
#include <iostream>

int main()
{

   int num, i, aux;
   
   puts("----------Numeros Primos------------");
   do{
   puts("Informe um numero - Para sair informe -1");
   cin>>num;
   if(num==-1){
      break;
   }
   aux=1;
   for(i=2;i<num;i++){
       if(num%i==0)
          aux=0;
   }
   if(aux==1){
     cout<<"O numero "<<num<<" é primo\n";
   }else
        cout<<"O numero "<<num<<" não é primo\n";

   }while(num>1 && num<100000);

   system("PAUSE");
   return EXIT_SUCCESS;
}

Editado por Giza
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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...