methoB_man Posted March 24, 2012 Report Share Posted March 24, 2012 Escrever um algoritmo que calcula e escreve o produto dos números primos entre 92 e 1478#include <conio.h> #include <stdio.h> main() { int num,b,soma; soma=1; for (num=92;num<=1478;num++) { for (b=2;b<num;b++) { if (num%b!=0) { soma=soma*num; printf("soma=%d",soma); } } } getch(); }não sei porque isso está dando zero , em nenhum momento eu disse para soma ser 0 ou o número ser 0 Quote Link to comment Share on other sites More sharing options...
0 methoB_man Posted March 24, 2012 Author Report Share Posted March 24, 2012 (edited) demorou uma eternidade , mas saiu :fiz a soma ,por que a multiplicação ficou muito grande >.<#include <stdio.h> #include <conio.h> main () { int i,j,numero; for (i=92;i<=1478;i++) { numero=0; j=2; while (j<i) { if (i % j == 0) { j=i; numero=1; } j=j+1; } if (numero== 0) { printf("\n%d",i); } } getch(); } Edited March 25, 2012 by Durub Quote Link to comment Share on other sites More sharing options...
0 methoB_man Posted March 24, 2012 Author Report Share Posted March 24, 2012 pessoal , fui tentar novamente , só que de outra forma , mas não consegui olhem #include <conio.h> #include <stdio.h> main() { int num,b,soma,c; soma=0; c=0; b=1; for (num=92;num<=1478;num++) { while (b<=num) { b++; if (num % b == 0) { c++; } } if (c==2) { printf("%d\n",num); } }tentei apenas imprimir o número primo dessa forma , mas não deu certo , alguém poderia me responder porque ? Quote Link to comment Share on other sites More sharing options...
0 Saint Kidd Posted March 26, 2012 Report Share Posted March 26, 2012 (edited) Vou tentar aqui. Edited March 26, 2012 by Saint Kidd Quote Link to comment Share on other sites More sharing options...
0 Saint Kidd Posted March 26, 2012 Report Share Posted March 26, 2012 Acho que estou conseguindo, mas não terminei ainda. Quote Link to comment Share on other sites More sharing options...
0 CPP Posted March 27, 2012 Report Share Posted March 27, 2012 Olá,A maneira mais fácil de encontrar números primos numa faixa é verificar por quantos números ele é divisível.Se for divisível por mais que 2 então não é primo.A questão do zero é que um int só pode representar valores entre -32767 e +32768 se for signed e0 a 65535 se for unsigned.Como o produto dos números primos nessa faixa é maior do que esses valores você precisa usar o tipo "long int"#include <conio.h>#include <stdio.h>main(){ int num,b, div; long int soma; soma=1; for (num=92;num<=1478;num++) { div = 0; for (b = 1; b <= num; b++) { if (!(num % B)) div++; } if (div <= 2) { soma *= num; printf("%d,", num); } } printf("\n\nSoma: %ld\n"); getch();}[/codebox] Quote Link to comment Share on other sites More sharing options...
0 Saint Kidd Posted March 27, 2012 Report Share Posted March 27, 2012 Eu tentei aqui e o algorítmo do CPP deu certo, mas mesmo declarando long int ou unsigned long int, o produto não vai dar certo.Precisaria usar float acho, mas a operação de produto não permite que se use float. Quote Link to comment Share on other sites More sharing options...
0 CPP Posted March 28, 2012 Report Share Posted March 28, 2012 Ok, mesmo se usar "long double" ainda ocorre overflowO produto desse range só vai poder ser calculado com precisão pelos computadores quânticos.Pra usar "long double" e só mudar 3 linhas:long double soma;soma = 1.0;printf("\n\nSoma: %f\n", soma);Abs Quote Link to comment Share on other sites More sharing options...
Question
methoB_man
Escrever um algoritmo que calcula e escreve o produto dos números primos entre 92 e 1478
não sei porque isso está dando zero , em nenhum momento eu disse para soma ser 0 ou o número ser 0
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.