Ir para conteúdo
Fórum Script Brasil
  • 0

numeros primos


methoB_man

Pergunta

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 para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 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();
}

Editado por Durub
Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...