Cod sursa(job #2253719)
| Utilizator | Data | 4 octombrie 2018 12:16:07 | |
|---|---|---|---|
| Problema | Fractii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.22 kb |
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
ifstream in("fractii.in");
ofstream out("fractii.out");
long long totneg=0;
bool v[1000000];
long long n;
long long cmmdc(long long a, long long b, long long aux){
long long c;
while(b){
c=a%b;
a=b;
b=c;
}
if(a==aux){
return a;
}
else{
long long ca=a;
while(a>1){
if(a%aux!=0){
return ca;
}
else{
a/=aux;
}
}
return aux;
}
}
void ciur(){
for(long long i=2; i<=n; i++){
if(!v[i]){
for(long long j=i+i; j<=n; j+=i){
v[j]=true;
long long corr=1;
for(long long k=j-i; k>=i+i; k-=i){
if(cmmdc(j, k, i)==i){
corr++;
}
}
totneg+=corr*2;
}
}
}
}
int main()
{
in>>n;
long long tot=n*n;
ciur();
totneg+=n-1;
out<<tot-totneg;
}