Ir para conteúdo

POWERED BY:

Arquivado

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

Marmotha

Primos

Recommended Posts

Ae pessoal! Estava eu procurando algo sobre o assunto quando me deparei com o forum. Depois de olhar alguns posts decide me cadastrar para participar XD. Eu tenho aqui um problema em minhas mãos, achei simples a principio mas como ainda não sou bom em montar algoritmos não consegui montar.

Eu preciso fazer um algoritmo que ache todos os números primos até 10.000 utilizando o menor numero de iterações. Ou seja, o algoritmo seja o mais inteligente possível. Número primo é aquele que so eh divisivel por 1 e por ele mesmo, até esse ponto fica simples. provavalmente terei que usar um "for" para repetir até achar todos, mas ali dentro da repetição que me perco! Provavalmente deve ser simples e se alguem puder me ajudar fico grato! Pensei em fazer divisões analisando o resto para descobrir se é primo ou não mas não consegui. :(

 

 

Abraços! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

 

 

chequei em alguns posts e achei uma solução já pronta:

 

#include <stdio.h>

#include <math.h>

#include <conio.h>

int primo(int n) {

int i, primo;

for(i=2;i<n;i++) {

if(n%i) primo=1;

else {

primo=0;

break;

}

}

return primo;

}

 

int main() {

int a,b,n;

printf("Insira o intevalo a ser verificado: \n" );

scanf("%i %i",&a,&B);

for(a=3;a<b;a++)

{

if(primo(a))

printf("%i \n",a);

 

getch();

}

return 0;

}

 

 

 

eu mudei umas coisinhas simples só. Mas o problema é que não saquei o int primo(int n)! É uma função isso? aprender isso sem um professor é dureza -.-.

 

 

Abraços! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

É.É uma função.Só que tem uns detalhes:

 

#include <stdio.h>
int primo(int n)
{ int i, primo;

  for(i=2;i<n;i++)
 {  if(n%i)
	  primo=1;
  else
 { primo=0;
	break;
  }
  }
  return primo;
}

 

Variável inútil 'primo'.Se é pra retornar 0 quando o negócio for divisível por algum numero que não seja 1 e N,faça logo um return 0,ao invés de atribuir.

E não precisa incluir a math.h se você não usa nenhuma função da biblioteca.

 

#include <stdio.h>
#include <math.h>
int isPrimo(int N)
{  int i,root;
root = (int) sqrt(N);
for (i=2;i<=root;i++)
{  if(!N%root)
	   return 0;
 }
 return 1;
}

int main(void)
{  int A,B;
int i;
do
{  scanf("%d %d",&A,&B);
	if (A<0 || B<0)
	   puts("Numeros invalidos");
} while (A < 0 || B < 0);

for(i=A;i<=B;i++)
{  if (isPrimo(i))
	  printf ("%d ",i);
 }
}

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.