LightOJ 1259 Goldbach`s Conjecture(证明哥德巴赫猜想)
2016-05-29 11:45
603 查看
题目链接:
LightOJ 1259 Goldbach`s Conjecture
题意:
验证哥德巴赫猜想:大于2的所有偶数都可以表示为两个素数的之和。
n <= 1e7
分析:
素数打表,暴力解。
LightOJ 1259 Goldbach`s Conjecture
题意:
验证哥德巴赫猜想:大于2的所有偶数都可以表示为两个素数的之和。
n <= 1e7
分析:
素数打表,暴力解。
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <climits> #include <cmath> #include <ctime> #include <cassert> #include <bitset> #define IOS ios_base::sync_with_stdio(0); cin.tie(0); using namespace std; typedef long long ll; const int MAX_N = 10000010; int T, n, prime_cnt, cases = 0; int prime[7 * MAX_N / 100]; bitset<MAX_N> bs; void GetPrime() { prime_cnt = 0; bs.set(); for(int i = 2; i < MAX_N; i++){ if(bs[i] == 1) prime[prime_cnt++] = i; for(int j = 0; j < prime_cnt && i * prime[j] < MAX_N; j++){ bs[i * prime[j]] = 0; if(i % prime[j] == 0) break; } } //printf("prime_cnt = %d\n", prime_cnt); } int main() { GetPrime(); scanf("%d", &T); while(T--){ scanf("%d", &n); int num = 0; for(int i = 0; prime[i] <= n / 2; i++){ if(bs[n - prime[i]]) num++; } printf("Case %d: %d\n", ++cases, num); } return 0; }
相关文章推荐
- 1.m分解阶乘之和
- 2.几种递推数
- 3.欧拉函数
- 4.快速幂模m算法
- 5.扩展欧几里得&&中国剩余定理
- 6.数论_web
- Project Euler Problem 387 - Harshad Numbers - 深度优先
- 编程之美2015初赛A
- LightOJ 1067 Combinations 组合数取模
- 数论题集
- 原根
- 阶与原根学习笔记
- HDU 1299 Diophantus of Alexandria
- Leftmost Digit(HDU 1060)
- Rightmost Digit(HDU 1061)
- Python-在奇数中寻找素数
- ZOJ 2674 Strange Limit 欧拉定理
- LeetCode-Palindrome Number
- 组合数求模总结
- LightOJ 1004 - Monkey Banana Problem