Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

Numeros Primos

Recommended Posts

Fiz esses comandos para verificar se um numero e primo:

 

 

for(i=2; i<(N-1); i++){

if( (N%2)==0){

return(0);

}

else {

return (1);

}

 

 

 

Agora como faço para fazer a soma nos N primeiros numeros primos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer somar quantos numeros sao primos?

se for, só botar uma variavel pra contador, x por exemplo, dai antes do return(0); ali você bota x++;

acho que seria isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inicie uma variável chamada "soma" com o valor zero e vá somando os valores dos números primos.

 

Mas há um erro no seu poograma. Deveria ser "if( (N%i)==0){". Seu código sempre retornará 0, pois o for começa em 2, retornando TRUE para o IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inicie uma variável chamada "soma" com o valor zero e vá somando os valores dos números primos.

 

Mas há um erro no seu poograma. Deveria ser "if( (N%i)==0){". Seu código sempre retornará 0, pois o for começa em 2, retornando TRUE para o IF

 

Obrigado. Não entendi essa da variavel soma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que eu disse ali emcima, crie uma variavel do tipo int com um nome qualquer e iguale a 0, por exemplo: int x=0;

dai dentro do if você bota um x++;

assim:

if( (N%2)==0){
x++;
return(0);
}
acho que é isso, dai dps escreva na tela a variavel x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Teu código está errado, pra verificar se um número é primo tem que testar todos a partir dele.

 

N = 9
9%2 = 1
return(1)
9 não é Primo.

Para saber quais são os N primeiros números primos, deve usar um laço, onde vai verificando um a um também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

N % 2 apenas verifica se o número é par.

Com exceção do número dois, todos os demais pares não são primos. Mas nem todos que não são primos são pares.

 

Por isso falei que o certo é N % i

 

 

O que falei da variável soma é o que o Lucas disse. Aí depende se você quer o total de números primos (x++) ou a soma dos números (x+=N)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inicie uma variável chamada "soma" com o valor zero e vá somando os valores dos números primos.

 

Mas há um erro no seu poograma. Deveria ser "if( (N%i)==0){". Seu código sempre retornará 0, pois o for começa em 2, retornando TRUE para o IF

Também está errado. O exemplo anterior também vale. Deve usar uma variável auxiliar pra guardar a quantidade de vezes que o N teve resto 0. Não sei como vai verificar isso com (x+=N), sendo que o laço é terminado depois que encontrado o primeiro primo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro que eu já sou contra ficarem criando tópicos e mais tópicos sobre números primos sendo que já dá p/ dar 3 voltas na Terra com a quantidade desses tópicos que já existe no fórum.

 

Segundo:vou ficar repetindo a vida inteira que não precisa guardar a quantidade de divisores de um número p/ saber se é primo ou não

 

 

for(i=2; i<(N-1); i++){
 if( (N%2)==0)
 return(0);
 else
 return (1);
}

 

Dá pau quando N é potência de primo ímpar.Eg: 9.

 

 

for(i=2; i<(N-1); i++){
 if( (N%i)==0)
 return(0);
 else
 return (1);
}

 

Dá pau quando N é potência de primo ímpar.Eg.: 9.

 

 

 

int primo(int N) {
  if (N==1) return 0;
  for(int i=2;i<N;i++)
  if (N%i==0) return 0;
  return 1;

}

 

int main() {

int P = 7;

int soma = 0;

for(;P>1;P--)

if (primo(P)) soma+=P;

return 0;

}[/code]

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema eh que fazendo for(i=2; i<(N-1); i++), você não conseguirá fazer o looping até a quantidade de números primos desejados e sim até o enézimo número menos 1...

 

Vê se esse código funciona:

 

#include <stdio.h>
#include <conio.h>

int numeros(int qtd)
{

int ac=0, i,j, flag; //ac de acumulador, flag apontará quando o numero for primo

for(i=2; i<=qtd;) /*Isso geraria um looping infinito, iremos incrementá-lo a cada vez que for detectado um numero primo*/
{
flag=1; /*Partimos do pressuposto que o número é primo... se flag continuar igual a 1 até o final, o numero sera adicionado ao acumulador*/

for(j=1; j<i; j++)
{
if(i%j==0)
flag=0;}

if(flag==1)
{
ac+=i;
i++;
}



}
return ac;

}

void main()
{


int qtd;
printf("Quantos números primos?");
scanf("%d \n",&qtd);

//Abaixo, chamamos a função, passamos os parâmetros e mostramos o resultado
printf("A soma dos %d primeiros numeros primos é: %d", qtd, numeros(qtd));
getch();


}

PS: Pow, pessoal, eu tentei identar o código mas não deu, as tags sairam impressas na tela... desculpa aí pela bagunça...

 

Abraços! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.