Pagini recente » Cod sursa (job #1401797) | Cod sursa (job #1214253) | Cod sursa (job #1829539) | Cod sursa (job #1352981) | Cod sursa (job #730063)
Cod sursa(job #730063)
#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;
}