Pagini recente » Cod sursa (job #2298813) | Cod sursa (job #783865) | Cod sursa (job #608926) | Cod sursa (job #242717) | Cod sursa (job #2848354)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int N, V[1000001], i;
void euler(int N) // pt fiecare nr de la 1 la N calculeaza cate nr mai mici sau egale cu i sunt prime cu i (pot forma o fractie ireductibila)
{
for (i=1; i<=N; i++)
V[i]=i;
for (i=2; i<=N; i++)
{
if (V[i]==i) //daca nr e prim
{
V[i]--;
for (int j=1; j<=N/i; j++)
V[i*j]=V[i*j]/i*(i-1); //incrementeaza fiecare V[x] pentru fiecare factor din descompunerea lui, la final V[x] continand indictaorul lui Euler pt nr x
}
}
}
int main()
{
ifstream f("fractii.in");
f>>N;
ofstream g("fractii.out");
euler(N);
int nr=1; // pentru 1/1
for (i=1; i<=N; i++)
nr+=V[i];
g<<nr;
return 0;
}