Ir para conteúdo

POWERED BY:

Arquivado

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

viciado

Calcular a soma dos numeros primos

Recommended Posts

#include <stdio.h>
#include <stdlib.h>

int soma_primos(int n){
	int aux,soma;
	while(aux<=n){
		soma = soma+n;
		aux = aux ++;
		n = n ++;
			 }
		return(soma);
}

int main(){
	int n;
	printf("Forneca o numero\n");
	scanf("%d",&n);
	if(n%2==0){
		printf("Numero nao tem nenhum primo\n");
			 }
	else{
		printf("A soma dos numeros primos e \n %d",soma_primos(n));
		}
	return(0);
}

Qual o problema pq as respostas sao um absurdo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, uma frase no teu programa já é um absurdo:

 

printf("Numero nao tem nenhum primo\n");

 

 

você primeiro tem que explicar direito o que você quer: é a soma dos primos de 2 até N ou é a soma de N primos?

 

Se for a soma de N primos, em 1996 dois caras mostraram que essa soma é "mais ou menos" (N2/2) * ln N (então dá pra fazer meio direto também).

 

As somas são absurdas porque o algoritmo inteiro está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Função log.

 

 

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

double neperiano(int n){
	   double log (double n);
	   return(n);
}

double soma(int n){
	  double ln, soma;
	  ln = neperiano(n);
	  soma = ((n*n)/2)*ln;
	return(soma);
}

int main()
{
  int n;
  printf("Informe o numero\n");
  scanf("%d",&n);
  printf("A soma dos numeros primos e \n %lf",soma(n));
  system("PAUSE");	
  return 0;
}
Tem algum problema de logica ou essa formula nao funciona pq as respostas estao erradas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. A fórmula está certa; foi demonstrada e tudo. E não disse que ela dava o resultado exato.

Teu código não tá nem retornando o valor certo da fórmula.

 

double neperiano(int n){
double log (double n);
return(n);
}

double soma(int n){
double ln, soma;
ln = neperiano(n);
soma = ((n*n)/2)*ln;
return(soma);
}

 

 

=>n=1 : 2 ; S(1) = 0,3465

 

=>n=2 : 5 ; S(2) = 1,3862

 

=>n=3 : 10 ; S(3) = 4,9437

 

 

O problema do teu primeiro algoritmo é que você nem sequer verifica se N é primo e vai somando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom pelo q eu entendi q ela disse, verifique primeiro c o numero é primo

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom pelo q eu entendi q ela disse, verifique primeiro c o numero é primo

 

Mais vou ter qverificar um por um ate N como posso fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem trocentos tópicos sobre números primos aqui.

 

EDIT: não precisa ser até N. Até sqrt(N) resolve.

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.