raf89 0 Denunciar post Postado Agosto 26, 2007 Oi. Sou novo no forum. Espero que ele me ajude a tirar minhas duvidas de C e que eu possa tirar as duvidas de outras pessoas. Bom, queria saber como eu faço um programa que mostre na tela os 100 primeiros numeros primos. Na logica eu sei mais ou menos, mas na hora de passar pra linguagem complica. Valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Agosto 27, 2007 Se sua dúvida é só sintaxe, posta a lógica ai que te ajudamos a traduzir. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Agosto 28, 2007 O i eh o contador, o z so pode chegar ate 2 pois como eh um numero primo ele so dividiria por 1 e por ele mesmo. Nao entendo o que ta errado. Eh como somar 1 + 1 e dar 5.#include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int x; int z = 0; int num = 1; while( i < 100){ x = 1; while( x <= num){ x++; if( num % x == 0) ++z; } if (z == 2){ printf("%d eh primo\n", num); ++i; } } ++num;} Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Agosto 28, 2007 é bom identar o código pra ficar mais fácil de se entender. #include <stdio.h>#include <stdlib.h>int main(){ int i = 0; int x; int z = 0; int num = 1; while( i < 100){ x = 1; while( x <= num){ x++; if( num % x == 0) ++z; } if (z == 2){ printf("%d eh primo\n", num); ++i; } } ++num;}repare que a variável num só será incrementada se i < 100.a lógica não está correta. além disso, voce precisa zerar a variável z a cada volta do laco principal. outra dica é: aqui while( x <= num) voce pode agilizar a saida do laco assim: while( x <= (num/2)) Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Agosto 28, 2007 Bom... pensei um pouco diferente. #include <iostream>#include <stdio.h>#include <stdlib.h>int main(){ int iQtdPrimos = 0; int num = 1; while( iQtdPrimos < 100) { bool bPrimo = true; int x = num/2; while(x > 1) { if( num % x == 0) { bPrimo = false; break; } x--; } if (bPrimo) { printf("%d eh primo\n", num); iQtdPrimos++; } num++; } system("pause");} Esta aí o código... Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Agosto 28, 2007 Eu fiz assim, mas so funciona uma vez: #include <stdio.h> #include <stdlib.h> int main(){ int i = 0; int x; int z = 0; int num = 1; while( i < 100){ num++; x = 1; while( x <= num/2){ z = 0; x++; if( num % x == 0){ ++z; }} if (z == 1){ printf("%d eh primo\n", num); ++i; } } system("pause"); } Realmente tinha que zerar o z. Valeu. O num nao tava dentro do while. Ele tava depois de fechar o while. O outro programa funcionou obrigado, mas nao entendo o que faz a biblioteca <iostream> , o comando bool, bprimo = true, bprimo = false, e porque o if(bprimo) ta se condiçao.Outra coisa. Estou usando copiar e colar o codigo para passar, como passo ele do jeito que ele é para ficar já identado? Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Agosto 29, 2007 Ola amigo. Vamos por parte: Você está certo, não precisaria do Include do IOStream. bool bPrimo = true; é a declaração de uma variavel booleana. (verdadeiro ou falso). O if funciona como : if(CONDICAO) certo... essa condição retorna sempre um booleano, true ou false. Como temos uma váriavel booleana, não precisamos testar. Mas para ficar mais claro. Poderiamos fazer o seguinte: if(bPrimo == true){ printf("%d eh primo\n", num); iQtdPrimos++;} Para colar o código identado, utilize o [ code] código [ /code] . Valeu... Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Agosto 30, 2007 Desculpa. Acho que voces ja devem tar me achando um chato. O problema é que estou aprendendo C e esses comandos sao de C++. Nao tem um jeito de fazer esse programa com comandos comuns( apenas while, if, else, etc)? Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Agosto 30, 2007 Amigo... Isto é C.Você pode tirar o system("Pause")... Que chama o SO.O que você diz que não é C, que é C++?Aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Agosto 30, 2007 O que eu tava querendo dizer eh que comandos como: bool e <iostream> eu nao conheço. Me disseram que eles sao comandos de C++. Mas a questao nao eh essa. Eh que eu quero fazer o programa com comandos simples, como os que eu falei. Valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Agosto 31, 2007 Amigo... bool é usado para declaração de uma variável booleana. Recebe TRUE, para verdadeiro, e FALSE para falso. Não é uma função! Se quiser. Podes tirar o <iostream> Não sei o que está querendo dizer. Mas... este programa está super simples. Se eu fosse você, antes de começar a programar em C, leria algum livro de lógica de programação, e ou, algoritmos. Abraço. Qualquer dúvida estamos ai. Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Setembro 1, 2007 CONSEGUI!!! Eh assim que eu queria. 1 nao eh primo. #include <stdio.h>#include <stdlib.h>int main(void){ int quant = 0, num = 2; int x, z; while (quant != 100){ z = 0; for(x = num; x > 0; x--){ if ( num % x == 0) ++z; } if ( z == 2){ printf("%d(%d)\n", num, quant + 1); ++quant; } ++num; } system("pause");} Compartilhar este post Link para o post Compartilhar em outros sites
raf89 0 Denunciar post Postado Setembro 1, 2007 Ah. Tem que fechar chaves no final do programa acima. Valeu!!!! Compartilhar este post Link para o post Compartilhar em outros sites