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:
#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?