习题10-4 素数间隔 UVa1644
2015-02-26 23:25
387 查看
1.题目描述:点击打开链接
2.解题思路:根据题意可知最大的素数在int范围内,可以先算出1299709以内的所有素数,随后二分查找n附近的素数的位置即可。
3.代码:
2.解题思路:根据题意可知最大的素数在int范围内,可以先算出1299709以内的所有素数,随后二分查找n附近的素数的位置即可。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; #define N 1300000 int vis ; vector<int>primes; void init() { int m = sqrt(N + 0.5); for (int i = 2; i <= m;i++) if (!vis[i]) for (int j = i*i; j < N; j += i) vis[j] = 1; for (int i = 2; i <= N;i++) if (!vis[i]) primes.push_back(i); } int main() { //freopen("test.txt", "r", stdin); int n; init(); while (scanf("%d", &n) != EOF&&n) { if (!vis )cout << 0 << endl; else { int L = 0, R = 100000; while (L < R) { int m = L + (R - L) / 2; if (primes[m] > n)R = m; else L = m + 1; } cout << primes[L] - primes[L - 1] << endl; } } return 0; }
相关文章推荐
- 习题10-4 UVA 1644 Prime Gap(素数打表+二分查找)
- 不同素数间隔(Uva 1644)
- 习题10-6 UVA - 1210 Sum of Consecutive Prime Numbers 连续素数之和(滑动窗口)
- 习题10-5 UVA - 1213 Sum of Different Primes 不同的素数之和(DP + 素数打表)
- 习题10-5 连续素数之和 uva 1210
- 习题10-5 不同素数之和 uva 1213
- 习题10-6 连续素数之和 UVa1210
- 【习题 6-10 UVA - 246】10-20-30
- 习题 10-23 UVA - 10479 The Hendrie Sequence
- 习题4-10 洪水 UVa815
- 习题10-7 几乎是素数 UVa10539
- 习题10-21 二项式系数 UVa1649
- UVa 1644 - Prime Gap(筛选求素数)
- 算法竞赛入门经典(第2版)习题4-10 洪水!UVa815
- UVa 1644 - Prime Gap(筛法选素数)
- 紫书搜索 习题7-10 UVA - 11214 Guarding the Chessboard 迭代加深搜索
- 习题10-9 约数 UVa294
- 习题10-20 商业中心 UVa1648
- 习题3-10 盒子 UVa1587
- 习题10-1 砌砖 UVa11040