Autor Tópico: Programa em C para encontrar números primos em um intervalo  (Lida 5190 vezes)

Offline rggoulart

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Programa em C para encontrar números primos em um intervalo
« Online: 05 de Novembro de 2013, 16:08 »
Boa tarde pessoal, tudo bem?
Sou novato tanto aqui no fórum como no ambiente unix e estou começando a aprender a programar em C agora.
Então peço por gentileza que desconsiderem qualquer erro infantil e que se possível me ajudem.

Antes de criar esse tópico, pesquisei e não encontrei nada a respeito que pudesse me ajudar.

É o seguinte. Eu preciso fazer um programa descobrir a quantidade de números primos existentes entre um certo intervalo de tempo. Esse intervalo de tempo, precisa ser uma variável (eu vou precisar escolher o intervalo cada vez que rodar o programa).
Além disso, eu preciso paralelizar esses processos (o número de processos precisa ser uma variável também, cada vez q for rodar vou optar por resolver  com X processos).

A princípio pensei em fazer uma busca de números primos comuns e com algumas ajudas, cheguei a mais ou menos isso aqui:

Código: [Selecionar]
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int ehprimo(long int n);

int main(int argc, char ** argv)
{
long int i;
long int cp=0;
long int inf=atoi(argv[1]);
long int sup=atoi(argv[2]);
for (i=inf; i<=sup; i++)
if (ehprimo(i))
{
cp++;
#ifdef DEBUG
printf("%ld, ",i);
#endif
}
printf("\nCount=%ld\n",cp);
return 0;
}

int ehprimo(long int n)
{
int primo = 1;
long int i;
for (i=2;i<sqrt(n+1);i++)
{
if ((n%i)==0)
{
primo=0;
break;
}
}
return primo;


Mas não sei como fazer para paralelizar isso. Eu sei um pouco da parte teórica que eu teria que compartilhar memória e tal... Mas não sei implementar. Também estou na dúvida se utilizo forks().

Alguém pode dar uma luz?

Offline rlcastrobh

  • Usuário Ubuntu
  • *
  • Mensagens: 31
    • Ver perfil
Re: Programa em C para encontrar números primos em um intervalo
« Resposta #1 Online: 10 de Novembro de 2013, 21:11 »
Citar
Além disso, eu preciso paralelizar esses processos (o número de processos precisa ser uma variável também, cada vez q for rodar vou optar por resolver  com X processos).

O que você quer dizer com isso poderia me dar um exemplo?
Qual algoritmo você usou para achar os números primos? Não estudei C e fiquei confuso com a lógica.