Pagini recente » Cod sursa (job #1053135) | Cod sursa (job #2404524) | Cod sursa (job #1018091) | Cod sursa (job #2873256) | Cod sursa (job #1651859)
#include <algorithm>
#include <bitset>
#include <cmath>
#include <fstream>
#include <iostream>
#include <queue>
#include <string.h>
#include <string>
#include <vector>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
ifstream fin ("fractii.in");
ofstream fout ("fractii.out");
const int Nmax = 1000666;
int N;
char ind[Nmax], isprime[Nmax];
int main() {
fin >> N;
memset(ind, 1, sizeof(char)*(N+1));
memset(isprime, 1, sizeof(char)*(N+1));
for(int p = 2; p <= N; ++p) {
if (isprime[p]) {
ind[p] = -1;
for (int q = 2*p; q <= N; q += p) {
isprime[q] = 0;
if (ind[q]) {
ind[q] *= -1;
}
}
for (ll q = 1ll*p*p; q <= N; q += 1ll*p*p) {
ind[q] = 0;
}
}
}
ll ans = 1ll*N*N;
for (int x = 2; x <= N; ++x) {
if (ind[x]) {
int q = N / x;
ans += 1ll*ind[x]*q*q;
}
}
fout << ans << endl;
return 0;
}