Soma do 6º e 12º primos

9 respostas
paulinhom

Bom,estou com uma dúvida quanto à resolução de um exercício.O exercício pede para que se calcule a soma entre 6º e o 12º números primos,sendo que eles devem ser encontrados pelo programa.Estou ainda na parte básica de programação =/ , segue a minha tentativa de resolução :

int cont,cont2,nd,n,n6,n12,produto;
  
         
          
      for (cont=1;cont<1000;cont++){
          
           
          for (cont2=1;cont2<cont;cont2++){
                     
              if (cont%cont2==0){nd++;} 
          }
              if (nd==2){ n++;}
              
                 if ( n==6){n6=cont;} 
             
                   if (n==12) {n12=cont;}          
                 
        }
        
         produto=n6*n12;
         
         printf ("O produto e: %d\n",produto);

Se alguém puder ajudar...gratile :wink:

9 Respostas

E

Você quer a soma do sexto (13) e do décimo-segundo (37) primos (que é 50) ou o produto deles (que é 509) ?

A

qual o algoritmo pra saber se o numero é primo?

paulinhom

produto, postei de forma errada. Mas acho que neste caso seria indiferente, não ?

E

No problem. De qualquer maneira, como é que você está dizendo que um número é primo?

Um número é primo se ele é divisível apenas por 1 e ele mesmo. Ou seja, quando o resto é sempre diferente de zero, exceto no caso 1 e no caso ele mesmo.

Pelo que você escreveu, não parece estar fazendo isso.

Que tal você imprimir o número quando você achar que ele é primo? Aí você pode conferir com uma lista de primos.

http://primes.utm.edu/lists/small/10000.txt

paulinhom

pelo que fiz acho se o numero é primo sim . por exemplo ele pega o 3 no primeiro laço. Entra no segundo laço e vai dividir por 1,por2 e por3 , sendo assim,só vai encontrar dois divisores pelos quais o resto é zero, 1 e 3 , então ele é primo.

E

Você quer checar com outros números? Até 3 é muito pouco. Se o resultado não está saindo de acordo com o que falei (509), você deve estar fazendo alguma coisa errada.

(Aliás, o seu programa diz que 4 é primo, ha ha ha, sendo que 4 = 2 * 2. Melhor revisar sua lógica.)

paulinhom

testei colocando n como último termo do laço,assim

* n é informado pelo usuário.

printf ("Os números primos de 2 até %d são :",%d);  

 for (cont=1;cont<=n;cont++){
      nd=0;
          for (cont2=1;cont2<=n;cont++){

              if (cont%cont2==0){ nd++ }

        }
             
              if (nd==2){
              
              printf ("%d-\t",cont); }  
 }

             

   }

da certo pra qualquer valor de n...

paulinhom

no programa que postei primeiro dá errado porque coloquei

cont2=1;cont2<cont;cont++

sendo que deveria colocar

cont2=1;cont2<=cont;cont++

paulinhom

Bom,consegui resolver e aqui está :

obs: ñ era nem soma nem produto, era diferença entre o 12º e o sexto números primos rs'

int cont,cont2,nd,n,n6,n12,diferenca;
      n=0;         
      for (cont=1;cont<100;cont++){
          nd=0;
           
          for (cont2=1;cont2<=cont;cont2++){
                     
              if (cont%cont2==0){nd++;} 
          }
              if (nd==2){ n++;}
              
                 if ( n==6){n6=cont;} 
             
                   if (n==12){n12=cont;}          
                 
        }
        
         diferenca=n12-n6;
         
         printf ("A diferenca e: %d\n",diferenca);
Criado 22 de outubro de 2010
Ultima resposta 22 de out. de 2010
Respostas 9
Participantes 3