Pagini recente » Cod sursa (job #3202222) | Cod sursa (job #2372878) | Cod sursa (job #250374) | Cod sursa (job #414889) | Cod sursa (job #729812)
Cod sursa(job #729812)
#include <fstream>
using namespace std;
#define nmax 1000010
int fi[nmax];//fi[x]=indicatorul lui euler(x)
int main(){
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n;
int i;
fin>>n;
fin.close();
for(i=1;i<=n;i++)
fi[i]=i-1;//pt ca numarul e prim si fi(x)=x-1
int j;
long long rez=0;
for(i=1;i<=n;i++){
for(j=i<<1;j<=n;j+=i){
fi[j]-=fi[i];
}
rez+=fi[i];
}
//acum rez este suma indicatorilor lui euler
rez=(rez<<1)+1;//adun un 1 pt fractia 1/1
//inmultesc rez cu 2, pt ca daca o fractia a/b subunitara e ireductibila, si b/a e ireductibila
fout<<rez<<endl;
fout.close();
return 0;
}