#include <iostream>
using namespace std;
int num;
int max=2017;
bool is_prime (int num);
bool co_prime (int a, int b);
int phi (int k);
int main()
{
//cout<<phi(2048)<<endl;
int sum=0;
for (int num=1; num<=2017; num++)
{
sum= sum+ phi(num);
//cout<<num<< "-->" <<phi(num)<<endl;
}
cout<<sum<<endl;
return 0;
}
int phi(int k)
{
int count=0;
if (k==1)
return 1;
if (is_prime(k))
return k-1;
for (int i=1; i<=k; i++)
{
if (co_prime(i, k))
count++;
}
return count;
}
bool is_prime(int num)
{
int k=num/2;
while (k>1)
{
if (num%k ==0)
{
// cout<<num<<" is comp."<<endl;
return false;
}
k--;
}
return true;
}
bool co_prime (int a, int b)
{
if (is_prime(a) && is_prime(b))
return true;
else
{
int k=2;
while (k<=a)
{
if (a%k==0 && b%k==0)
return false;
k++;
}
return true;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbnVtOwppbnQgbWF4PTIwMTc7CgoKYm9vbCBpc19wcmltZSAoaW50IG51bSk7CmJvb2wgY29fcHJpbWUgKGludCBhLCBpbnQgYik7CmludCBwaGkgKGludCBrKTsKaW50IG1haW4oKQp7CgovL2NvdXQ8PHBoaSgyMDQ4KTw8ZW5kbDsKaW50IHN1bT0wOwpmb3IgKGludCBudW09MTsgbnVtPD0yMDE3OyBudW0rKykKewogIHN1bT0gc3VtKyBwaGkobnVtKTsKICAvL2NvdXQ8PG51bTw8ICItLT4iIDw8cGhpKG51bSk8PGVuZGw7Cn0KCmNvdXQ8PHN1bTw8ZW5kbDsKcmV0dXJuIDA7Cn0KaW50IHBoaShpbnQgaykKewppbnQgY291bnQ9MDsKaWYgKGs9PTEpCiAgcmV0dXJuIDE7CmlmIChpc19wcmltZShrKSkKIHJldHVybiBrLTE7CmZvciAoaW50IGk9MTsgaTw9azsgaSsrKQp7CiAgaWYgKGNvX3ByaW1lKGksIGspKQogICAgY291bnQrKzsKfQoKcmV0dXJuIGNvdW50Owp9CmJvb2wgaXNfcHJpbWUoaW50IG51bSkKewoKICAgaW50IGs9bnVtLzI7CiAgIHdoaWxlIChrPjEpCiAgIHsKICAgICAgaWYgKG51bSVrID09MCkKICAgICAgewogICAgLy8gICAgY291dDw8bnVtPDwiIGlzIGNvbXAuIjw8ZW5kbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgay0tOwogICB9CiAgIHJldHVybiB0cnVlOwp9Cgpib29sIGNvX3ByaW1lIChpbnQgYSwgaW50IGIpCnsKICAgaWYgKGlzX3ByaW1lKGEpICYmIGlzX3ByaW1lKGIpKQogICAgIHJldHVybiB0cnVlOwoKICAgZWxzZSAKICAgeyAKICAgICAgIGludCBrPTI7CiAgICAgICB3aGlsZSAoazw9YSkKICAgICAgIHsKICAgICAgICAgIGlmIChhJWs9PTAgJiYgYiVrPT0wKQoKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICBrKys7CiAgICAgICB9CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgfQoKfQ==