Pagini recente » Cod sursa (job #2203102) | Cod sursa (job #1862398) | Cod sursa (job #245225) | Cod sursa (job #2392798) | 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;
}