Jump to content
Sign in to follow this  
David Rego

Dúvida em exercício com números primos

Recommended Posts

David Rego

Boa noite!

Estava a resolver exercícios em c e tenho dúvidas em resolver o seguinte exercício:

A conjectura de Goldbach, um matemático do século XVIII, afirma que qualquer número par (superior a 4) é igual à soma de dois números primos.

Exemplos:

80 = 7 + 73; 34 = 3 +31; 1256 = 7 + 1249

Desenvolva uma função que receba como argumento um número inteiro par, superior a 4, e escreva no monitor os dois números primos que verificam a referida afirmação. A função devolve 1, no caso de ter encontrado os dois números primos. Se não encontrar (o que é improvável, uma vez que ninguém conseguiu provar que a conjectura é falsa), devolve 0.

Alguém sabe como fazer isto?

Cumps

Share this post


Link to post
Share on other sites
Tsubas

Mas qual é mesmo a dúvida????

1- Deverás ter uma função que encontro todos os números primos inferiores ao número que recebes

2- Deves encontrar uma de somando os dois numeros dar o numero que inseriste

A meu ver a melhor forma é começar por apanhar o 1º numero primo menor que o inserido e ver se "inserido-maior num primo = numero primo"  se isto se verificar já sabes quais são os 2 números

Atenção que isto é assim visto à pressa, não sei se será a melhor forma  ;)

Share this post


Link to post
Share on other sites
Localhost

Se queres mesmo aprender algumas coisas com este exercício o melhor que tens a fazer é preencheres um vector com todos os números primos de 1 até n, onde n é o número passado como argumento à função, utilizando o Crivo de Eratóstenes e depois fazeres dois ciclos (criando todas as somas possíveis) em relação a esse vector. A cada passo nos ciclos verificas se a soma dos dois elementos que estão a ser percorridos é igual a n.


here since 2009

Share this post


Link to post
Share on other sites
Tsubas

A dar o exercicio resolvido assim, ele fica na mesma, sem saber como o devia fazer lalalal

Share this post


Link to post
Share on other sites
Localhost

Mais um tópico que poderia ter um conteúdo interessante para toda a gente que visitasse o p@p estragado.

Um sincero obrigado @Super Oliks.


here since 2009

Share this post


Link to post
Share on other sites
anolsi

@Super Oliks, o Tsubas e o Localhost têm razão. O objectivo do fórum não é fazer trabalhos de casa. É ajudar a perceber dúvidas que os utilizadores tenham.

@Daniel Rego, para a próxima coloca dúvidas e não exercícios a pedirem para serem resolvidos.


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
David Rego

Boa noite mais uma vez!

Para que não fiquem com ideias erradas, acabei por resolver o exercício e nem sequer cheguei a pegar no código do link que o rapaz postou.

Aqui fica a minha resolução.

int verificaprimo(int n){
int i,a=0;

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

void main(){

int num,res,i,aux,aux1;
do{
system("cls");
printf("Introduza um numero:");
scanf("%d",&num);
}while(num<=4 || num%2!=0);

for(i=1;i<=num;i++){
res=verificaprimo(i);
if(res==1){
	aux=num-i;
	if(verificaprimo(aux)==1){
		printf("Soma de primos: %d + %d = %d\n",aux,i,num);
		break;
	}
}
}

}

Abraço!

Share this post


Link to post
Share on other sites
Super Oliks

me desculpem, por ter postado o link, não era a minha intenção prejudicar o tópico, mas é porque lá tinha a lógica de programação e também a resolução do exercício, mais uma vez desculpe-me e isso não vai se repetir.  :down:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.