Pagini recente » Cod sursa (job #1928310) | Cod sursa (job #429562) | Cod sursa (job #115492) | Cod sursa (job #533666) | Cod sursa (job #2531797)
#include <fstream>
#define M 1000005
using namespace std;
ifstream cin("mins.in");
ofstream cout("mins.out");
long long n, m;
char mo[M ];
bool ciur[M ];
int ans[M];
void citire_prelucrare()
{
cin >> n >> m;
n--, m--;
ciur[1] = ciur[0] = 1;
for(int i = 2 ; i <= n ; i++)
if(!ciur[i])
for(int j = i * i ; j <= n ; j += i)
ciur[i] = 1;
for(int i = 1 ; i <= M - 5; i++)
mo[i] = -1;
for(int i = 2 ; i * i <= M - 5 ; i++)
for(int j = i * i ; j <= M - 5 ; j += i * i)
mo[j] = 0;
for(int i = 2; i <= M - 5; i++)
if(!ciur[i])
for(int j = i; j <= M - 5; j += i)
mo[j] = (-1) * mo[j];
}
void rez()
{
long long rez = 0;
for(int i = 2 ; i * i <= M - 5 ; i++)
rez += (long long) (n / i) * (m / i) * mo[i];
cout << (long long) n * m - rez;
}
int main()
{
citire_prelucrare();
rez();
return 0;
}