Pagini recente » Cod sursa (job #655794) | Cod sursa (job #2587167) | Cod sursa (job #1735988) | Cod sursa (job #627691) | Cod sursa (job #2532142)
#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*i<=n;i++)
if(ciur[i]==0)
for(int j=i*i;j<=n;j+=i)
ciur[j]=1;
for(int i=1;i<=1000000;i++)
mo[i]=-1;
for(int i=2;i*i<=n;i++)
for(int j=i*i;j<=n;j+=i*i)
mo[j]=0;
for(int i=2;i<=n;i++)
if(ciur[i]==0)
for(int j=i;j<=n;j+=i)
mo[j]=(-1)*mo[j];
}
void rez()
{
long long rez = 0;
for(int i = 2 ; i <= n ; i++)
rez += (long long) (n / i) * (m / i) * mo[i];
cout << (long long) n * m - rez;
}
int main()
{
citire_prelucrare();
rez();
return 0;
}