Pagini recente » Cod sursa (job #599228) | Cod sursa (job #2441589) | Cod sursa (job #1231594) | Cod sursa (job #1971823) | Cod sursa (job #2195753)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
const int maxR = 50000000,
primes = 24996465;
int p[primes+1], k = 1;
bool b[maxR+1];
void ciur(int n) {
b[0] = b[1] = 1;
for(int i = 4; i <= n; i += 2)
b[i] = 1;
for(int i = 3; i*i <= n; i += 2)
if(!b[i])
for(int j = i*i; j <= n; j += i)
b[i] = 1;
p[1] = 2;
for(int i = 3; i <= n; i += 2)
if(!b[i]) p[++k] = i;
}
int legendre(int n, int k) {
int r = n/k, s = 0, exp = k;
while(r != 0) {
s += r;
exp *= k;
r = n/exp;
}
return s;
}
int main()
{
int r, d, s = 0;
ciur(maxR);
in >> r >> d;
int ap = legendre(r, d);
for(int j = 0; j < r; j++)
if(ap - legendre(j, d) - legendre(r-j, d) > 0)
s++;
out << s;
return 0;
}