// UVa 11408 - Count DePrimes #include <iostream> #include <string.h> using namespace std; #define integer unsigned long long integer T[5000001]; integer sum[5000001]; bool is_prime[5000001]; int main() { memset(is_prime, true, sizeof(is_prime)); memset(sum, 0, sizeof(sum)); // sieve for (integer i = 2; i <= 5000000; i++) if (is_prime[i]) { for (integer j = (i << 1); j <= 5000000; j += i) { is_prime[j] = false; sum[j] += i; } } // DePrimes T[0] = 0; T[1] = 0; for (integer i = 2; i <= 5000000; i++) if (is_prime[i] || is_prime[sum[i]]) T[i] = T[i - 1] + 1; else T[i] = T[i - 1]; // input/output integer a, b; while ((cin >> a) && a) { cin >> b; cout << T[b] - T[a - 1] << endl; } return 0; }
Friday, December 18, 2015
UVa 11408 - Count DePrimes
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment