Ir ao conteúdo

soma de dois numeros primos = numeros par


Paparelli

Posts recomendados

Postado

Estou tentando fazer um programa do Dev C++, mas não consigo localizar um erro no programa que retorna a mensagem " In function primo: control reaches end of non-void function"

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int numero, cont, testanumero, testacont;

int primo(){

int x, cont, testaprimo;

cont = 2;

while(cont<x) {

testaprimo = x%cont;

if(testaprimo==0){

return(0);break;

}else{

cont+=1;

}

}

}

void main () {

int primo ();

do {

printf("Digite um numero par:\n");

scanf("%d", &numero);

} while((numero%2) != 0);

numero -= 1;

cont=1;

do {

testanumero = numero;

testacont = cont;

primo(testanumero);

primo(testacont);

if(testanumero && testacont){

printf("= %d + %d\n", numero, cont);

}

numero -=2;

cont += 2;

} while (numero > 0);

system("pause");

}

  • Membro VIP
Postado

O q você quer checar com seu programa? Se a soma de primos da sempre par? Se for, é fácil. Para que uma soma resulte em par, apenas soma de 2 pares ou 2 impares. Se o unico primo que é par é 2... então ja era.Sendo assim, coloque uma condiçao pra checar se os primos sao ambos impares ou pares e ai ja era...

  • 9 meses depois...
Postado

???

Epa, posso estar a dizer uma grande asneira (mas tenho a certeza que não), mas a soma de dois números é sempre par, sejam eles primos, não-primos, pares, não-pares, etc...

  • 4 semanas depois...
Postado

é cara realmente disse asneira...

Como a soma de 2 numeros é sempre PAR?

Ex: 5+2 = 7

5 é impar, 2 é par, ambos são primos e a soma é um numero IMPAR.

Postado

o problema é o seguinte amigo

eu nem reparei se a funçao int primo() ta bem escrita maaas

toda funçao tem q acabar com um return cara

por ex :

se você chega a um caso q cont é maior x e nao fez o return 0 ;break;

você sai do while e a funçao nao encontra nenhum return pra saber q valor tem q devolver

pro main()

entendeu?

testa isso ae...certeza q o problema é esse

e nao se esqueça disso....funçoes sempre tem q ter um return como ultima opção de saida

Postado

Paparelli,

Consegui identificar alguns erros só passando o olho.

(Da próxima vez coloca identado o código porque assim é de arrebenta)

Olha, a sua chamada de método ta assim:

primo(testanumero);

e seu método primo ta assim:

int primo(){

}

Você esqueceu de passar os parâmetros corretamente.

A sua classe primo tem um while da seguinte forma:

while(cont<x) {

}

Mas qual o valor de x? Você não inicializou nem passou por parametro o valor dela.

Não é necessário em seu programa o void antes do main.

Não é necessário esta linha no main:

int primo ();

De primeira passagem pude ver isto. Tente consertar e ver se funciona.

Abraços,

progArt.

Postado

toda funçao tem q acabar com um return cara

Nem sempre. Se uma função for declarada como do tipo void*, nem faz sentido você colocar um return no final.

  • 4 semanas depois...
Postado
é cara realmente disse asneira...

Como a soma de 2 numeros é sempre PAR?

Ex: 5+2 = 7

5 é impar, 2 é par, ambos são primos e a soma é um numero IMPAR.

oh, lol. Referia-me a dois numeros iguais

  • 2 meses depois...
Postado
???

Epa, posso estar a dizer uma grande asneira (mas tenho a certeza que não), mas a soma de dois números é sempre par, sejam eles primos, não-primos, pares, não-pares, etc...

nao esta completamente errado nao, se os numeros forem iguais....3+3,7+7

Postado
Citação

é cara realmente disse asneira...

Como a soma de 2 numeros é sempre PAR?

Ex: 5+2 = 7

5 é impar, 2 é par, ambos são primos e a soma é um numero IMPAR.

Não sei se você já ouviu falar na Conjectura de Goldbach:

Todo inteiro par maior que 2 pode ser escrito como a soma de 2 números primos.

Acho que o objetivo do programa é fazer um teste da conjectura

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...