Pagini recente » Cod sursa (job #2533559) | Cod sursa (job #3182935) | Cod sursa (job #2426739) | Cod sursa (job #319113) | Cod sursa (job #2647260)
#include <stdio.h>
#include <stdlib.h>
#define NMax 1000000
FILE *f, *g;
short int sieve[NMax];
int euler[NMax];
/*
int cmmdc(int a, int b)
{
int r;
while(b)
{
r = a%b;
a = b;
b = r;
}
while(a != b)
{
if(a > b)
a = a - b;
else
b = b - a;
}
return a;
}
int main()
{
int N, ct_fractii = 0;
f = fopen("fractii.in", "r");
g = fopen("fractii.out", "w");
if(f == NULL)
{
printf("Eroare citire fisier");
exit(1);
}
if(g == NULL)
{
printf("Eroare scriere fisier");
exit(1);
}
fscanf(f, "%d", &N);
for(int lv = 1; lv <= N; lv++)
{
if(lv == 1)
ct_fractii++;
if(lv == 2)
ct_fractii += 2;
if(lv > 2)
{
for(int i = 1; i <= lv; i++)
{
if(cmmdc(i,lv) == 1)
ct_fractii += 2;
}
}
}
fprintf(g, "%d", ct_fractii);
fclose(f);
fclose(g);
return 0;
}*/
int main()
{
int N;
long long int ct_fractii = 0;
f = fopen("fractii.in", "r");
g = fopen("fractii.out", "w");
if(f == NULL)
{
printf("Eroare citire fisier");
exit(1);
}
if(g == NULL)
{
printf("Eroare scriere fisier");
exit(1);
}
fscanf(f, "%d", &N);
/*sieve[0] = sieve[1] = 1; //punem 1 cand NU sunt prime si 0 cand sunt
for (int i = 2; i * i <= N; i++) // Parcurgem vectorul sieve.
if (!sieve[i]) // Dacă numărul curent este prim,
for (int j = i * i; j <= N; j += i) // parcurgem multiplii săi
sieve[j] = 1; // și îi marcăm drept numere compuse.
*/
for (int i = 2; i <= N; i++)
euler[i] = i - 1;
for (int i = 2; i <= N; i++)
{
ct_fractii += euler[i];
for (int j = 2 * i; j <= N; j += i)
euler[j] -= euler[i];
}
printf("%lld", 2*ct_fractii + 1);
fprintf(g, "%lld", 2*ct_fractii + 1);
fclose(f);
fclose(g);
}