Ir ao conteúdo

C++ como fazer para imprimir todos os numeros primos


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Boa tarde, estou aprendendo algorítimo, e com isso foi me passado um teste para ver em qual nivel eu estava, porém mesmo após fazer o codigo eu não consigo fazer que ele rode, o meu DEV C++ está com uns problemas, já tentei reinstalar ele e tudo mais, então precisei fazer o codigo online, estarei postando o meu codigo aqui, e se alguém puder me ajudar com qualquer dica, ou um caminho para melhorar e as coisas que estão faltando eu agradeço! 

Eu ainda tenho algumas dúvidas de como fazer para imprimir todos os numeros primos de vez no caso 2, e outras falhas no codigo, eu precisaria de uma ajuda para me guiar, eu agradeço desde já!

 

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>


int main()
{


int ano, i, h, t, a=-1, m=-1, d=-1, ah=-1, mh=-1, dh=-1, ida, mi, id, bissexto=0,  y, z, x[10], aux, n, p, c, r=1, num1,par,impar,resto;


	


printf ("_____________________________ \n");


printf ("[1] Digite 1 para receber Dez numeros e classifica-los em par ou impar. \n");
printf ("[2] Digite 2 para receber numeros naturais de 1 ate 20 e exibir todos os valores primos. \n");
printf ("[3] Digite 3 para receber 10 números e coloca-los em ordem decrescente. \n");
printf ("[4] Digite 4 para calcular a idade de uma pessoa em Dias, a partir da data de nascimento e data atual. \n");
printf ("[5] Digite 5 para sair. \n");
printf ("_____________________________\n")
printf ("DIGITE DE 1 A 5 PARA ESCOLHER UMA DAS OPÇÕES ACIMA: \n");
scanf  ("%d",&opcao);

switch (opcao)
{
case 1:
  cout
  for (int num1=1; num1<=20;num1++)
{

printf ("Digite o primeiro numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o segundo numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o terceiro numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o quarto numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o quinto numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o sexto numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o setimo numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o oitavo numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o nono numero:\n", num1);
scanf  (%d), &num1);
printf ("Digite o decimo numero:\n", num1);
scanf  (%d), &num1);

}
if (num1 % 2 == 0) 
{
printf ("%d",  "Numero Par\n");
else
{
printf ("%d", "Numero Impar\n");
}
}
  break;
case 2:
  cout

while (r==1)

{
printf ("\nDigite o primeiro numero natural: ")
scanf("%d", &n);
printf ("\nDigite o segundo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o terceiro numero natural: ")
scanf("%d", &n);
printf ("\nDigite o quarto numero natural: ")
scanf("%d", &n);
printf ("\nDigite o quinto numero natural: ")
scanf("%d", &n);
printf ("\nDigite o sexto numero natural: ")
scanf("%d", &n);
printf ("\nDigite o setimo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o oitavo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o nono numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo primeiro numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo segundo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo terceiro numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo quarto numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo quinto  numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo sexto numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo setimo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo oitavo numero natural: ")
scanf("%d", &n);
printf ("\nDigite o decimo nono numero natural: ")
scanf("%d", &n);
printf ("\nDigite o vigesimo numero natural: ")
scanf("%d", &n);
For (p=1;p<=n;p++) {
       for (c=2;c<=p-1;c++)
          if (p%c == 0)
             break;
          if (c==p)

printf ("%d",p);


  break;
case 3:
  cout 
for (int  y=1; y<=10;y++)
{
printf ("Digite o primeiro numero: \n");
scanf (%d,&y); 
printf ("Digite o segundo numero: \n");
scanf (%d,&y);
printf ("Digite o terceiro numero: \n");
scanf (%d,&y); 
printf ("Digite o quarto numero: \n");
scanf (%d,&y); 
printf ("Digite o quinto numero: \n");
scanf (%d,&y); 
printf ("Digite o sexto numero: \n");
scanf (%d,&y); 
printf ("Digite o setimo numero: \n");
scanf (%d,&y); 
printf ("Digite o oitavo numero: \n");
scanf (%d,&y); 
printf ("Digite o nono numero: \n");
scanf (%d,&y); 
printf ("Digite o decimo numero: \n");
scanf (%d,&y); 
}
for(y=1;y<=9;y++)
{
for(z=y+1;<=10;z++)
{
{
if (num[z]>num[y])
{
aux= num[y];
num[y]= num[z];
num[z]= aux;
}
}
}
printf("\nOs numeros em ordem decrescente sao: \n\n");
for(y=1;y<=10;y++)
}
printf("%d", num[y]);
}


  break;
case 4:
  cout 
while(d<0 || m<0 || a<0)
           {if(d>31||d<1){
            printf("Preencha os dados sobre a data de seu nascimento:\n");

       printf("Informe o dia de nascimento (ex. 16): d = ");

       scanf("%d", &d);


            goto REFAZ;}
            if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1)){
            printf("\nFavor escolher um numero de 1 a 30. \n\n");
            goto REFAZ;}
            if(((bissexto==1)&&(m==2))&&((d<1)||(d>29))){
            printf("\nFavor escolher um numero de 1 a 29. \n\n");
            goto REFAZ;}
            if(((bissexto==0)&&(m==2))&&((d<1)||(d>28))){
            printf("\nFavor escolher um numero de 1 a 28. \n\n");
            goto REFAZ;}       	
       if (m>12||m<1){
       printf("Informe o mes de nascimento (ex. 11): m = ");

       scanf("%d", &m);

       }
   }while (m>12||m<1);

    if(a>2100||a<1900){
       printf("Informe o ano de nascimento (ex.1984): a = ");
  
}
            }while (a>2100||a<1900);
            if ((a % 4 == 0) && ((a%400==0)||(a % 100 != 0))){
            printf("Ano Bissexto! \n\n");
            bissexto = 1;}

       scanf("%d", &a);
       printf("Insira o mes: \n\n");
       scanf("%d", &m);
       if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1))
  printf("\nData de nascimento informada = %d/%d/%d", d, m, a);

printf("\nData atual informada = %d/%d/%d\n", dh, mh, ah);

i = d + m*30 + a*365;

h = dh + mh*30 + ah*365;
id=h-i;

ida = ah-a;

mi= 12-m+mh+ida*12;

{
    if(m>mh)
        printf("\nIdade = %d",ida-1);
 
   else
        printf("\nIdade em anos = %d anos", ida);

}
printf("\nIdade em meses = %d meses", id/30);
//12-m+(m-mh)+(ida*12)
printf("\nIdade hoje = %d dias", id);

{
             
     
  break;
case 5:
  cout
  system("pause");
  break;
default:
	printf ("Opcao selecionada não corresponde aos itens acima");

}
getch ();
return (0);
}

 

  • Amei 1
  • Solução
Postado

@Josuke   seu programa está bom , mas precisa uma  melhor organização , e um erro , você esqueceu alguns ponto_e_virgula no final da linha que precisa na linguagem c/c++ etc... ,  colocou cout sem declarar using namespace std; , o scanf é assim scanf("%d",&num1);  , existe o do/while e o while sozinho , ali você misturou os dois , na opção 4 ,   e precisa fazer a identação do código , para que ele fique mais legível e fácil de ler , nos printf precisa observar as aspas duplas ,  não precisa repetir o código pois para isso existe os laços de repetição for while do/while ,  na opção 3 seu método de ordenação está certo mas você usou uma variável simples para guardar os números digitado e precisa ser um vetor ,  então seu código com algumas modificações poderia ser assim   :

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(){
    int ano,i,h,t,a=-1,m=-1,d=-1,ah=-1,opcao;
    int mh=-1,dh=-1,ida,mi,id,bissexto=0;
    int y,z,x[10],aux,n,p,c,r=1,num1,par,impar,resto;
    int Numero,Fatorial,Primo,Resposta,Flag;
    do{
        printf("_____________________________ \n");
        printf("[1] para receber Dez numeros e classifica-los em par ou impar.\n");
        printf("[2] para receber numeros naturais de 1 ate 20 e exibir todos os valores primos.\n");
        printf("[3] para receber 10 números e coloca-los em ordem decrescente.\n");
        printf("[4] para calcular a idade de uma pessoa em Dias ,\n");
        printf("    a partir da data de nascimento e data atual.\n");
        printf("[5] para sair . . . !\n");
        printf("==========_____________________________=============\n");
        printf("DIGITE DE 1 A 5 PARA ESCOLHER UMA DAS OPÇÕES ACIMA: ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1:
            printf("Digite 10 Numeros Para Saber Se eh Par Ou Impar\n");
            for(i=0;i<10;i++){
                printf ("Digite O %d%c numero : ",i+1,167);
                scanf("%d",&num1);
                if(num1 % 2 == 0){
                    printf ("%d , Numero Par\n\n",num1);
                }
                else{
                    printf ("%d , Numero Impar\n\n",num1);
                }
            }
            break;
        case 2:
            system("cls");            
            printf("Digite 20 Numero Para Saber Se eh Primo\n");
            while(r<21){
                printf ("\nDigite o %d%c numero natural: ",r,167);
                scanf("%d",&Numero);
                for(Primo=2;Primo<=Numero;Primo++){
                    Fatorial = 2;
                    Flag =0;
                    while(Primo != Fatorial){
                        Resposta = Primo % Fatorial;
                        Fatorial = Fatorial + 1;
                        if(Resposta == 0 ){
                            Flag = 1;
                        }
                    }
                    if(! Flag){
                        if(Numero==Primo)printf("%d%c Numero --> %d , eh Primo !",r,167,Primo);
                   }
                } 
                printf("\n");
                r++;
            }
            break;
        case 3:
            printf("Insira 10 Numeros Para Colocar Em Ordem Decrescente\n");
            for(y=0;y<10;y++){
                printf("Digite O %d%c numero: ",y+1,167);
                scanf("%d",&x[y]); 
            }
            for(y=0;y<10;y++)       {
                for(z=y+1;z<10;z++) {
                    if( x[z] > x[y]){
                        aux  = x[y] ;
                        x[y] = x[z] ;
                        x[z] = aux  ;
                    }
                }
            }
            printf("\nOs numeros em ordem decrescente sao: \n\n");
            for(y=0;y<10;y++){
                printf("%d - ",x[y]);
           }
           printf("\n\n");
           break;
        case 4:
            
        /*while(d<0 || m<0 || a<0){
            if(d>31||d<1){
                printf("Preencha os dados sobre a data de seu nascimento:\n");
                printf("Informe o dia de nascimento (ex. 16): d = ");
                scanf("%d", &d);
                goto REFAZ;
            }
            if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1)){
                printf("\nFavor escolher um numero de 1 a 30. \n\n");
                goto REFAZ;
            }
            if(((bissexto==1)&&(m==2))&&((d<1)||(d>29))){
                printf("\nFavor escolher um numero de 1 a 29. \n\n");
                goto REFAZ;
            }
            if(((bissexto==0)&&(m==2))&&((d<1)||(d>28))){
                printf("\nFavor escolher um numero de 1 a 28. \n\n");
                goto REFAZ;
            }       	
            if (m>12||m<1){
                printf("Informe o mes de nascimento (ex. 11): m = ");
                scanf("%d", &m);
            }
    }while(m>12||m<1);
    if(a>2100||a<1900){
        printf("Informe o ano de nascimento (ex.1984): a = ");
    }
    }while (a>2100||a<1900);
    if((a % 4 == 0) && ((a%400==0)||(a % 100 != 0))){
        [printf("Ano Bissexto! \n\n");
        bissexto = 1;}
        scanf("%d", &a);
        printf("Insira o mes: \n\n");
        scanf("%d", &m);
        if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1))
        printf("\nData de nascimento informada = %d/%d/%d", d, m, a);
        printf("\nData atual informada = %d/%d/%d\n", dh, mh, ah);
        i = d + m*30 + a*365;
        h = dh + mh*30 + ah*365;
        id=h-i;
        ida = ah-a;
        mi= 12-m+mh+ida*12;
    }
    if(m>mh){
        printf("\nIdade = %d",ida-1);
    else
        printf("\nIdade em anos = %d anos", ida);
    }
    printf("\nIdade em meses = %d meses", id/30);
    //12-m+(m-mh)+(ida*12)
    printf("\nIdade hoje = %d dias", id);
    }*/
            break;
        case 5:
            printf("Saindo Do Programa . . . !\n\n");
            system("pause");
            break;
        default:
            printf ("Opcao selecionada não corresponde aos itens acima");
        }
    }while(opcao !=5);
    return (0);
}

 

  • Curtir 1
  • Amei 1
Postado
3 horas atrás, devair1010 disse:

@Josuke   seu programa está bom , mas precisa uma  melhor organização , e um erro , você esqueceu alguns ponto_e_virgula no final da linha que precisa na linguagem c/c++ etc... ,  colocou cout sem declarar using namespace std; , o scanf é assim scanf("%d",&num1);  , existe o do/while e o while sozinho , ali você misturou os dois , na opção 4 ,   e precisa fazer a identação do código , para que ele fique mais legível e fácil de ler , nos printf precisa observar as aspas duplas ,  não precisa repetir o código pois para isso existe os laços de repetição for while do/while ,  na opção 3 seu método de ordenação está certo mas você usou uma variável simples para guardar os números digitado e precisa ser um vetor ,  então seu código com algumas modificações poderia ser assim   :


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(){
    int ano,i,h,t,a=-1,m=-1,d=-1,ah=-1,opcao;
    int mh=-1,dh=-1,ida,mi,id,bissexto=0;
    int y,z,x[10],aux,n,p,c,r=1,num1,par,impar,resto;
    int Numero,Fatorial,Primo,Resposta,Flag;
    do{
        printf("_____________________________ \n");
        printf("[1] para receber Dez numeros e classifica-los em par ou impar.\n");
        printf("[2] para receber numeros naturais de 1 ate 20 e exibir todos os valores primos.\n");
        printf("[3] para receber 10 números e coloca-los em ordem decrescente.\n");
        printf("[4] para calcular a idade de uma pessoa em Dias ,\n");
        printf("    a partir da data de nascimento e data atual.\n");
        printf("[5] para sair . . . !\n");
        printf("==========_____________________________=============\n");
        printf("DIGITE DE 1 A 5 PARA ESCOLHER UMA DAS OPÇÕES ACIMA: ");
        scanf("%d",&opcao);
        switch(opcao){
        case 1:
            printf("Digite 10 Numeros Para Saber Se eh Par Ou Impar\n");
            for(i=0;i<10;i++){
                printf ("Digite O %d%c numero : ",i+1,167);
                scanf("%d",&num1);
                if(num1 % 2 == 0){
                    printf ("%d , Numero Par\n\n",num1);
                }
                else{
                    printf ("%d , Numero Impar\n\n",num1);
                }
            }
            break;
        case 2:
            system("cls");            
            printf("Digite 20 Numero Para Saber Se eh Primo\n");
            while(r<21){
                printf ("\nDigite o %d%c numero natural: ",r,167);
                scanf("%d",&Numero);
                for(Primo=2;Primo<=Numero;Primo++){
                    Fatorial = 2;
                    Flag =0;
                    while(Primo != Fatorial){
                        Resposta = Primo % Fatorial;
                        Fatorial = Fatorial + 1;
                        if(Resposta == 0 ){
                            Flag = 1;
                        }
                    }
                    if(! Flag){
                        if(Numero==Primo)printf("%d%c Numero --> %d , eh Primo !",r,167,Primo);
                   }
                } 
                printf("\n");
                r++;
            }
            break;
        case 3:
            printf("Insira 10 Numeros Para Colocar Em Ordem Decrescente\n");
            for(y=0;y<10;y++){
                printf("Digite O %d%c numero: ",y+1,167);
                scanf("%d",&x[y]); 
            }
            for(y=0;y<10;y++)       {
                for(z=y+1;z<10;z++) {
                    if( x[z] > x[y]){
                        aux  = x[y] ;
                        x[y] = x[z] ;
                        x[z] = aux  ;
                    }
                }
            }
            printf("\nOs numeros em ordem decrescente sao: \n\n");
            for(y=0;y<10;y++){
                printf("%d - ",x[y]);
           }
           printf("\n\n");
           break;
        case 4:
            
        /*while(d<0 || m<0 || a<0){
            if(d>31||d<1){
                printf("Preencha os dados sobre a data de seu nascimento:\n");
                printf("Informe o dia de nascimento (ex. 16): d = ");
                scanf("%d", &d);
                goto REFAZ;
            }
            if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1)){
                printf("\nFavor escolher um numero de 1 a 30. \n\n");
                goto REFAZ;
            }
            if(((bissexto==1)&&(m==2))&&((d<1)||(d>29))){
                printf("\nFavor escolher um numero de 1 a 29. \n\n");
                goto REFAZ;
            }
            if(((bissexto==0)&&(m==2))&&((d<1)||(d>28))){
                printf("\nFavor escolher um numero de 1 a 28. \n\n");
                goto REFAZ;
            }       	
            if (m>12||m<1){
                printf("Informe o mes de nascimento (ex. 11): m = ");
                scanf("%d", &m);
            }
    }while(m>12||m<1);
    if(a>2100||a<1900){
        printf("Informe o ano de nascimento (ex.1984): a = ");
    }
    }while (a>2100||a<1900);
    if((a % 4 == 0) && ((a%400==0)||(a % 100 != 0))){
        [printf("Ano Bissexto! \n\n");
        bissexto = 1;}
        scanf("%d", &a);
        printf("Insira o mes: \n\n");
        scanf("%d", &m);
        if((m==4 || m==6 || m==9 || m==11) && (d>30||d<1))
        printf("\nData de nascimento informada = %d/%d/%d", d, m, a);
        printf("\nData atual informada = %d/%d/%d\n", dh, mh, ah);
        i = d + m*30 + a*365;
        h = dh + mh*30 + ah*365;
        id=h-i;
        ida = ah-a;
        mi= 12-m+mh+ida*12;
    }
    if(m>mh){
        printf("\nIdade = %d",ida-1);
    else
        printf("\nIdade em anos = %d anos", ida);
    }
    printf("\nIdade em meses = %d meses", id/30);
    //12-m+(m-mh)+(ida*12)
    printf("\nIdade hoje = %d dias", id);
    }*/
            break;
        case 5:
            printf("Saindo Do Programa . . . !\n\n");
            system("pause");
            break;
        default:
            printf ("Opcao selecionada não corresponde aos itens acima");
        }
    }while(opcao !=5);
    return (0);
}

 

@devair1010 Meu caro amigo devair, muito obrigado pela ajuda, o seu codigo serviu base aqui, consegui ver os meus erros e identificar, muito obrigado por ter disponibilizado um pouco do seu tempo para me ajudar, obrigado mesmo!

  • Curtir 1
  • Moderador
Postado

@Josuke Não pelo contrário. Não apagamos tópicos assim.

 

Poderia por gentileza  postar qual foi a solução encontrada? Ou se uma das respostas aqui resolveu o seu problema, por favor marque ela como melhor resposta.

 

  • Curtir 1
Postado
20 minutos atrás, DiF disse:

@Josuke Não pelo contrário. Não apagamos tópicos assim.

 

Poderia por gentileza  postar qual foi a solução encontrada? Ou se uma das respostas aqui resolveu o seu problema, por favor marque ela como melhor resposta.

 

Eu dei um coração na resposta que me ajudou, que foi a segunda, não sei como faço para colocar melhor resposta

  • Curtir 1
  • Moderador
Postado

@Josuke Repare que todo post tem uma bolinha com um "V" dentro do lado do seu nick. Clique nele no post que quer definir como melhor resposta

 

  • Curtir 1
Postado
18 minutos atrás, DiF disse:

@Josuke Repare que todo post tem uma bolinha com um "V" dentro do lado do seu nick. Clique nele no post que quer definir como melhor resposta

 

Pronto

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!