《挑战程序设计竞赛》 大区间内素数的个数

题意:给一个区间边界值很大的区间,但是区间大小较小,,求出该区间内所有质数个数。知识补充:;LL;const int M = 100009,INF = 0x3fffffff;vector<int> prime;void get_prime(void) {bool isprime[1000009];memset(isprime, 0, 1000009);for (int i = 2; i <= 1000000; i++) {if (!isprime[i]) {prime.push_back(i);for (int j = i; j <= 1000000; j += i) isprime[j] = true;}}}int primes(LL a, LL b) {bool isprime[1000009];int ans = 0;memset(isprime, 0 , b – a);for (int i = 0; i < prime.size() && prime[i] < b; i++) {int j = 0;bool find = false;for (LL k = a; k < b; k++, j++) if (k % prime[i] == 0) { find = true; break; }if (!find) continue;for (; j < b – a; j += prime[i]) { isprime[j] = true; if (j + a == prime[i]) ans++; }}for (int i = 0; i < b – a; i++) if (!isprime[i]) ans++;if (a <= 1) ans -= 2 – a;return ans;}int main(void) {//problem: , address:LL a, b;get_prime();while (~(scanf(“%lld%lld”, &a, &b))) {cout << primes(a, b) << endl;}return 0;}

所以你不懂我的选择,也可以不懂我的难过,

《挑战程序设计竞赛》 大区间内素数的个数

相关文章:

你感兴趣的文章:

标签云: