Pagini recente » Cod sursa (job #57078) | Cod sursa (job #1452772) | Cod sursa (job #599351) | Cod sursa (job #2422685) | Cod sursa (job #2836501)
#include <bits/stdc++.h>
using namespace std;
int cmmdc(int x,int y) {
if(!y) return x;
return cmmdc(y,x%y);
}
int main() {
ifstream cin("mins.in");
ofstream cout("mins.out");
int c, d;
cin >> c >> d;
c--, d--;
long long ans = c * d;
int hmin = min(c,d);
vector<int> div(hmin+2, 0); // numarul de divizori
vector<bool> mul(hmin+2, 0); // verificam daca este multiplu de patrat perfect
for(int i = 2; i <= hmin; i++) {
if(!div[i]) {
for(int j = i; j <= hmin; j += i)
div[j]++;
for(long long j = 1LL*i*i; j <= hmin; j += 1LL*i*i )
mul[j] = 1;
}
if(!mul[i]) {
long long aux = 1LL * (c/i) * (d/i);
if(div[i]%2 == 0) ans += aux;
else ans -= aux;
}
}
cout << ans << '\n';
return 0;
}