Pagini recente » Cod sursa (job #2355816) | Cod sursa (job #306896) | Cod sursa (job #1410647) | Cod sursa (job #1559654) | Cod sursa (job #3222682)
#include <fstream>
#include <iostream>
#include <climits>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cmath>
using namespace std;
ifstream fin("mins.in");
ofstream fout("mins.out");
const int LMAX = 1000005;
short ciur[LMAX];
int main() {
int c, d, i, j;
long long s1, s2, sol;
fin>>c>>d;
c--;
d--;
sol = min(c, d) - 1;
for (i = 2; i <= min(c, d); i++) {
s1 = s2 = 0;
if (ciur[i] == 0) { //daca nr este prim
for (j = i; j <= max(c, d); j = j+i) {
ciur[j]++;
if (j <= min(c, d)) s1++; //admite inversa
else s2++;
}
sol = sol + s1*(s1 - 1) + s2*s1;
}
else if (ciur[i] == 2) { //scad, este produs de 2 nr prime
for (j = i; j <= max(c, d); j= j + i) {
ciur[j]--;
if (j <= min(c, d)) s1++;
else s2++;
}
sol = sol - s1*(s1 - 1) - s2*s1;
}
}
fout<<c*d - sol;
fin.close();
fout.close();
return 0;
}