Pagini recente » Cod sursa (job #125735) | Cod sursa (job #122138) | Cod sursa (job #2911260) | Cod sursa (job #1722186) | Cod sursa (job #1175902)
#include<stdio.h>
#include<stdlib.h>
int* generare(int *n)
{
char tabel[*n];
int *prime = NULL;
int contor=0;
int i,j;
for(i=0;i<*n;i++)
tabel[i]=0;
for(i=2;i<*n;++i)
{
if(tabel[i]==0)
{
contor++;
for(j=i+i;j<*n;j=j+i)
{
tabel[j]=1;
}
}
}
prime = (int*)malloc(contor*sizeof(int));
contor = 0;
for(i=2;i<*n;++i)
if(tabel[i]==0)
prime[contor++] = i;
*n = contor;
return prime;
}
void citire(int *n)
{
FILE *input=fopen("fractii.in","r");
if(input==NULL)
printf("S-a detectat o eroare la deschiderea fisierului\n");
fscanf(input,"%i",n);
fclose(input);
}
int compunere(int n,int *prime,int m)
{
int contor=0;
int i,j;
int k=0;
int total=n*2;
for(i=2;i<=n;i++)
{
if(i%2==0)
{
for(j=3;j<=n;j=j+2)
{
contor=0;
for(k=0;k<=i && k<=j && k<m;k++)
{
if(i%prime[k]==0 && j%prime[k]==0)
{
contor++;
break;
}
}
if(contor==0)
total++;
}
}
else
{
for(j=2;j<=n;j++)
{
contor=0;
for(k=0;k<=i && k<=j && k<m;k++)
{
if(i%prime[k]==0 && j%prime[k]==0)
{
contor++;
break;
}
}
if(contor==0)
total++;
}
}
// printf("\n");
}
return total;
}
void afisare(int rezutat)
{
FILE *output=fopen("fractii.out","w");
fprintf(output,"%i",rezutat);
fclose(output);
}
void procesare()
{
int n,i;
citire(&n);
int m=n;
int *prime=NULL;
prime=generare(&m);
int rezultat=compunere(n,prime,m);
afisare(rezultat);
}
int main()
{
procesare();
return 0;
}