Pagini recente » Istoria paginii runda/oji2017/clasament | Cod sursa (job #461208) | Cod sursa (job #1705121) | Cod sursa (job #369485) | Cod sursa (job #2161829)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("fractii.in");
ofstream g("fractii.out");
long long int euler[101],n,s=1;
int cmmdc(long long int a,long long int b)
{
if(!b)
return a;
else return cmmdc(b,a%b);
}
int prim(long long int var)
{
int nr=0;
for(int i=2;i<=sqrt(var);i++)
if(var%i==0)
nr++;
if(!nr)
return 1;
else return 0;
}
void euler_indicator()
{
euler[1]=1;
euler[2]=1;
for(int i=3;i<=n;i++)
if(prim(i))
{
euler[i]=i-1;
for(int j=2;i*j<=n;j++)
euler[i*j]=0;
}
for(int i=1;i<=n;i++)
if(!(euler[i]))
{
int nr=0;
for(int j=1;j<i;j++)
if(cmmdc(i,j)==1)
nr++;
euler[i]=nr;
}
int s=1;
for(int i=2;i<=n;i++)
s+=2*euler[i];
g<<s;
}
int main()
{
f>>n;
euler_indicator();
return 0;
}