-
Posts
5 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Marcelly
-
-
@arfneto Sim, vetor está fora dos limites. Eu concordo contigo, acho que todas essas restricoes acabam piorando o aprendizado.
voce chegou a rodar o programa? Esse trecho de codigo que voce postou por ultimo, nunca retorna que a representação não é possivel. É uma das coisas que está me deixando louca kkkO next acho que faz exatamente isso que você disse de proximo primo. voce pode ver no final do codigo que existe p1 = p2, p2 = p3 e etc.
- 1
-
@arfneto Entao, nao é permitido utilizar funcoes, nem vetores, nem breaks nem nada. Na verdade eu inseri o break após ler muito e ver alguns exemplos pelo Google pois n tinha e continuo n tendo ideia do que utilizar. Eles exigem que voce utilize apenas o que foi visto em aula até aqui: if, for e while, nada além. Unica biblioteca permitida é <stdio.h> Para quem está iniciando na linguagem, é um pouco pesado devo dizer. voce poderia me dizer mais detalhadamente como coloco em pratica suas observacoes? Muitissimo obrigada ate aqui.
- 1
-
@arfneto Olá! Como vai? Obrigada pela sua resposta. Na verdade eu venho alterando o código pois estou o dia inteiro mexendo nele e cada hora chego em uma conclusão diferente. Vou postar o código abaixo, e tentar explicar mais ou menos o problema que estou enfrentando agora:
1- Nao consigo enxergar uma forma de fazer isso sem True ou False;
2- Nao posso utilizar breaks, ja tentei whiles e etc mas nada dá certo;
3 - Era suposto fazer um loop para que o usuário só parasse de dar entradas se por acaso ele digitasse zero, e o programa deve funcionar para 0 < n < 10ˆ8;
4 - Não consigo incluir a saída para o caso de o numero não conseguir ser representado pelo quadrado de 4 números primos consecutivos.
Eis o código que tenho até agora:
Se você notar, se eu insiro um numero qualquer, por exemplo: 2020, o programa me retorna que ele pode ser representado pela soma de 17ˆ2+19ˆ2+23ˆ2+29ˆ2, ou se eu insiro 100 por exemplo, ele deveria me retornar que é impossível, mas ele fica pensando e não retorna nada.
Peço desculpas pela alteração do código anterior e do enunciado. Fiz alterações omitindo o que achava que já tinha em mãos, mas me enganei. É que horas e horas mexendo com isso, cada hora que penso estar no caminho certo, acho que embaralho mais ainda o conjunto.
#include <stdio.h> #define TRUE 1 #define FALSE 0 int main() { int p1=2, p2=3, p3=5, p4=7, next, i, n, prime; printf("Entrada: "); scanf("%d", &n); while (TRUE){ if((p1*p1) + (p2*p2) + (p3*p3) + (p4*p4) == n){ printf("Saida: %dˆ2 + %dˆ2 + %dˆ2 + %dˆ2\n", p1, p2, p3, p4); break; } next = p4 + 2; if (next > n) { printf("Impossivel a representacao"); break;} if(next < n) { prime = FALSE; while (next < n && prime == FALSE) { prime = TRUE; for (i=3; i < next && prime == TRUE; i+=2) { if (next % i == 0) prime = FALSE; } if (prime == TRUE) { p1 = p2; p2 = p3; p3 = p4; p4 = next; } else { next += 2; } } } } return 0; }
adicionado 4 minutos depois
Digite um numero (0 < n < 10^8): 100
Nao existem 4 primos consecutivos cujos quadrados somam 100Digite um numero (0 < n < 10^8): 1002172
1002172 = 491^2 + 499^2 + 503^2 + 509^2
Digite um numero (0 < n < 10^8): 0Boa sorte!
Essa é a saída esperada pelo programa, @arfneto. Mas estou enfrentando dificuldade em defini-la.
- 1
-
Estou trabalhando em um código, porém não consigo compreender o que há de errado. A sequencia só funciona para a primeira entrada, e depois simplesmente apaga. É suposto que o usuario entre com um numero qualquer (0 a 10ˆ8) e o programa retorne se aquele numero inserido pode ser representado como a soma de 4 primos , por exemplo:
Entrada: 87
Saída: 2ˆ2 + 3ˆ2+ 5ˆ2+7ˆ2
Entrada: 100
Saída: Não é possível a representação
Qualquer dica, agradeço imensamente.
Obs: É proibido utilizar funções, vetores, breaks e etc. É um trabalho de faculdade sobre as funções mais básicas: ifs, fors e whiles. Obrigada!
Eis o código:
#include <stdio.h> #include <math.h> int main() { int j1, j2, j3, j4, next, i, numb, prime; printf("Entrada: "); scanf("%d", &n); while(1){ if((j1 *j1) + (j2 *j2) + (j3 *j3) + (j4 *j4) == n){ printf("Saida: %d + %d + %d + %d", j1, j2, j3, j4); } next = p4+2; if(next > n) printf("Impossivel"); while(1) for(i=3; i<= sqrt(next); i=i+2){ if(next % i == 0) prime = false; else{ prime = true;} } if(prime == true){ p1=p2; p2=p3; p3=p4; p4=next; } else{ next = next +2;} } return 0; }
- 1
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
Numero representado como soma de primos em C
em C/C#/C++
Postado
@arfneto Sim, pois raiz quadrada precisaria da library math.h e nao posso utiliza-la...