viciado 1 Denunciar post Postado Agosto 31, 2008 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
LucasPS 1 Denunciar post Postado Agosto 31, 2008 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
Beraldo 864 Denunciar post Postado Agosto 31, 2008 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
viciado 1 Denunciar post Postado Agosto 31, 2008 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
LucasPS 1 Denunciar post Postado Agosto 31, 2008 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
gRoOvE 0 Denunciar post Postado Agosto 31, 2008 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
Beraldo 864 Denunciar post Postado Agosto 31, 2008 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
gRoOvE 0 Denunciar post Postado Agosto 31, 2008 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
_Isis_ 202 Denunciar post Postado Agosto 31, 2008 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
Pedro Rezende 0 Denunciar post Postado Setembro 9, 2008 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