Pagini recente » Cod sursa (job #3292041) | Cod sursa (job #13552) | Cod sursa (job #1358542) | Cod sursa (job #2951790) | Cod sursa (job #2352267)
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
bool notPrime[1000004];
int Prime[100005], cardPrime, n;
void eratostene() {
int SqRtN = sqrt(n);
for (int i = 2; i <= SqRtN; ++i) {
if (!notPrime[i]) {
Prime[++cardPrime] = i;
for (int j = 2 * i; j <= n; j += i) {
notPrime[j] = true;
}
}
}
for (int i = SqRtN+1; i <= n; ++i) {
if(!notPrime[i]) Prime[++cardPrime] = i;
}
}
int phiEuler(int m) {
int Product = m;
for (int i = 1;Prime[i]!=0 && Prime[i] <= m; ++i) {
if (m%Prime[i] == 0) {
Product /= Prime[i];
Product *= (Prime[i] - 1);
}
}
return Product;
}
int main() {
fin >> n;
eratostene();
long long nrFractii = 0;
for (int i = 2; i <= n; ++i) {
nrFractii+= phiEuler(i);
}
nrFractii *= 2;
nrFractii += 1;
fout << nrFractii;
return 0;
}