Pagini recente » Cod sursa (job #1951367) | Cod sursa (job #636754) | Cod sursa (job #451771) | Cod sursa (job #1092003) | Cod sursa (job #3293821)
//Dandu-se un numar natural N, sa se determine numarul numerelor prime mai mici sau egale cu N.
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
int ciur(int n)
{ int numar=0;
bool *isPrime=malloc((n+1)*sizeof(bool));
if(isPrime==NULL)
{
perror("eroare la alocarea memoriei");
exit(-1);
}
for (int i = 0; i <= n; i++)
isPrime[i] = true;
int candidat_prim=3;
for(;candidat_prim*candidat_prim<=n;candidat_prim+=2)
{
if(isPrime[candidat_prim])
{
for (int j=candidat_prim*candidat_prim;j<=n;j+=candidat_prim)
isPrime[j]=false;
}
}
candidat_prim=3;
numar=1;
for(;candidat_prim<=n;candidat_prim+=2)
{if(isPrime[candidat_prim])
{
numar++;
}}
free(isPrime);
return numar;
}
int main(void)
{ int n,numar;
FILE *fin=fopen("ciur.in","rt");
if(fin==NULL)
{
perror("eroare la deschiderea fisierului");
exit(-1);
}
FILE *fout=fopen("ciur.out","wt");
if(fout==NULL)
{
perror("eroare la deschiderea fisierului");
exit(-1);
}
fscanf(fin,"%d",&n);
numar=ciur(n);
fprintf(fout,"%d",numar);
return 0;
}