Jump to content
Fórum Script Brasil
  • 0

numeros primos


methoB_man

Question

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

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

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 by Durub
Link to comment
Share on other sites

  • 0

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 ?

Link to comment
Share on other sites

  • 0

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 e

0 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]

Link to comment
Share on other sites

  • 0

Ok, mesmo se usar "long double" ainda ocorre overflow

O 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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...