Ir ao conteúdo
  • Cadastre-se

soma de dois numeros primos = numeros par


Paparelli

Posts recomendados

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");

}

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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...

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois...
  • 4 semanas depois...

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

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...
  • 2 meses depois...
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

Link para o comentário
Compartilhar em outros sites

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...