Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gustavo Rodrigues Torre

Primos multiplicados

Recommended Posts

Escrever um programa que calcula e escreve o produto dos números primos entre 92 e 1478.

 

Eu fiz deste modo

Só q e para calcular entre 92 e 1478

 

Não sei como fazer isso

 

Segue abaixo o código pra análise

 

/*primos multiplicados*/
# include<stdio.h>
# include<stdlib.h> 

main()
{ 
int i, n, primo;
float acm;

acm = 1;

   for(n=1;n<92;n++) {
   primo = 1;
   for(i=2;i<=(n-1);i++) {
	  if (n % i == 0) {
	  primo = 0;
		 break;
	  }
   }
   if (primo == 1) {
   acm = acm * n;
   printf("\nachei um primo %d", n);
}

}
printf("\nO valor da multiplicacao eh: %.0f", acm, " ");
printf("\n");
system("pause");
return 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

<_< http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif Numero primo é aquele que numa sequencia de numeros que vai de 1 até ele so é divisivel duas vezes, que é por 1 e por ele mesmo. Entao pra achar um numero primo temos que percorrer de 1 até ele verificar quantas vezes ele é divisivel, se for apenas duas vezes entao ele é primo......Essa é mais ou menos a lógica!!!

 

Agora pra achar todos entre 92 e 1478 e multiplica-los é so usar o seguinte código:

 

CODE

#include<stdio.h>

#include<conio.h>

 

main()

{

int primo=0,i,j;

long int mult=1;

for(i=93;i<1478;i++)

{

for(j=1;j<=i;j++)

{

if(i%j==0)

primo++;

}

if(primo==2)

{

mult=mult*i;

printf("Achei um Primo...%d",i);

}

primo=0;

}

printf("A Multiplicacao dos primos entre 92 a 1478 é = %ld",mult);

getch();

}

Espero ter ajudado!!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
Numero primo é aquele que numa sequencia de numeros que vai de 1 até ele so é divisivel duas vezes, que é por 1 e por ele mesmo. Entao pra achar um numero primo temos que percorrer de 1 até ele verificar quantas vezes ele é divisivel, se for apenas duas vezes entao ele é primo......Essa é mais ou menos a lógica!!!

 

O número 1 não é primo.Tem um teorema que diz que a decomposição de um número em fatores primos é única. Eg.: 12 = 2^2 * 3. Se 1 fosse primo, você teria 12 = 2^2*3*1^2 = 2^2*3*1^5.

 

E também não precisa verificar se o número é divisível por 1. Todos os números naturais são.

 

#include<stdio.h>
#include<math.h>
main()
{  int i,j;
unsigned long mult = 1;

for(i=93; i<1478; i++) {
	 for(j=2; j<=(int)sqrt(i); j++) {
		  if (!(i%j))
			  break;
	 }
	 if (j > (int)sqrt(i))
		  mult*=i;
}
printf("Produto:%ul\n",mult);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

import java.Isdis, ANTES DE COMENTAR LEIA COM ANTENCAO......mas cara o algoritmo que eu colcquei ai executa tudo o que ele pediu ou não??? So mais uma coisa , a minha teoria sobre numeros primos está correcta ou errada???

 

E quem disse que 1 nao é primo??

Compartilhar este post


Link para o post
Compartilhar em outros sites
import java.Isdis, ANTES DE COMENTAR LEIA COM ANTENCAO......mas cara o algoritmo que eu colcquei ai executa tudo o que ele pediu ou não??? So mais uma coisa , a minha teoria sobre numeros primos está correcta ou errada???

 

E quem disse que 1 nao é primo??

 

1o: Não falei que teu algoritmo tava errado

2o: O sqrt é só uma otimização

3o: A sua teoria:

 

Numero primo é aquele que numa sequencia de numeros que vai de 1 até ele so é divisivel duas vezes, que é por 1 e por ele mesmo. Entao pra achar um numero primo temos que percorrer de 1 até ele verificar quantas vezes ele é divisivel, se for apenas duas vezes entao ele é primo......Essa é mais ou menos a lógica!!!

 

Não tem sentido em verificar divisibilidade por 1 e N, porque TODOS os naturais > 1 são divisíveis por 1 e por ele mesmo ("de 1 até N" = intervalo fechado)

 

Quem disse que 1 não é primo? Comece por aqui: http://primes.utm.edu/notes/faq/one.html , http://mathworld.wolfram.com/PrimeNumber.html

 

A definição de número primo diz que N é primo se e somente se o conjunto dos divisores de N possuir exatamente dois elementos. A não ser que você consiga provar que 1 não é a mesma coisa que 1 (lembrando que num conjunto não existem elementos repetidos), 1 não é primo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A definição de número primo diz que N é primo se e somente se o conjunto dos divisores de N possuir exatamente dois elementos. A não ser que você consiga provar que 1 não é a mesma coisa que 1 (lembrando que num conjunto não existem elementos repetidos), 1 não é primo.

Tem toda a razao, 1 nao é um numero primo, o problema foi meu, porque eu parti de um conceito antigo...é sempre bom debater, porque tbm é uma maneira de aprender.

 

Ja agora, eu acho que pra o nivel dele o meu algoritmo é bem mais compreensivel, até porque ele cumpri todas as regras da definição de um numero primo!!!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cumprir ele cumpre, mas veja que o laço

 

for(j=1;j<=i;j++) {
  if(i%j==0)
  primo++;
}

 

é executado até o final mesmo que o numero seja composto.Exemplo? tente o número 561. Ele é o menor dos números de Carmichael (classe que engana alguns testes de primalidade). 561 = 3*11*17.

 

j=1 => primo=1

j=3 => primo=2

j=11 => primo=3

j=17 => primo=4

j=561 => primo=5

 

main() {
 int i,j;
 long int mult=1;
 for(i=93;i<1478;i++) {
 for(j=2;j<i;j++) {
	 if(i%j==0)
	   break
 }
 if(j==i) {
	 mult=mult*i;
	 printf("Achei um Primo...%d",i);
  }
  }
}

 

Pode não parecer nada,mas a ISO gostou de ter unsigned long long como tipo em C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi nada dos programas apresentados

Alguem poderia me explicar melhor?

 

 

 

Cumprir ele cumpre, mas veja que o laço

 

for(j=1;j<=i;j++) {
   if(i%j==0)
	  primo++;
}

é executado até o final mesmo que o numero seja composto.Exemplo? tente o número 561. Ele é o menor dos números de Carmichael (classe que engana alguns testes de primalidade). 561 = 3*11*17.

 

j=1 => primo=1

j=3 => primo=2

j=11 => primo=3

j=17 => primo=4

j=561 => primo=5

 

main() {
  int i,j;
  long int mult=1;
  for(i=93;i<1478;i++) {
	 for(j=2;j<i;j++) {
		 if(i%j==0)
		   break
	 }
	 if(j==i) {
		 mult=mult*i;
		 printf("Achei um Primo...%d",i);
	  }
   }
}

Pode não parecer nada,mas a ISO gostou de ter unsigned long long como tipo em C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.