Pagini recente » Cod sursa (job #2653499) | Cod sursa (job #2378798) | Cod sursa (job #860572) | Cod sursa (job #548127) | Cod sursa (job #2539550)
#include <bits/stdc++.h>
#define ULL unsigned long long
using namespace std;
ifstream in("mins.in");
ofstream out("mins.out");
int c,d;
ULL sum;
vector <int> Div[1000000];
bitset <1000000> noPrim;
void ciur()
{
for(int i=2;i<=c;i++)
if(!noPrim[i])
{
Div[i].push_back(i);
for(int j=2;j<=c/i;j++)
{
Div[i*j].push_back(i);
noPrim[i*j]=1;
}
}
}
int main()
{
in>>c>>d;
c--;d--;
ciur();
sum=d;
for(int i=2;i<=c;i++)
{
int fin=1<<( Div[i].size() );
int sumPart=d;
for(int k=1;k<=fin-1;k++)
{
int dvr=1;
int nrI=0;
for(int j=0;j<Div[i].size();j++)
if( k&(1<<j) )
{
dvr*=Div[i][j];
nrI++;
}
if(nrI%2)
sumPart-=d/dvr;
else
sumPart+=d/dvr;
}
sum+=(ULL)sumPart;
}
out<<sum;
return 0;
}