10168 Summation of Four Primes
来源:互联网 发布:淘宝店铺招牌模板下载 编辑:程序博客网 时间:2024/05/30 22:54
一道数论的题,问一个数是否能被分解成四个素数相加的方式,打表发现知道1e7之内的相邻素数之间的差距不超过145,而素数只有一个2是偶数。
而根据哥伦巴克猜想每个非二偶数都可以拆成两个素数的和。这样我们直接对200以下的偶数打表处理出两个素数之和。
这样分情况讨论,200以下的书直接用2和3构造出一个偶数。而对于大于200的数直接求出比他小30以上的素数作为b,再更具奇偶用2或者3构造出一个小于200 的偶数,再利用打表来得出剩下两个数。废话不多说,代码~~~~~
#include <iostream>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <functional>#include <cstdio>#include <queue>#include <map>#include <algorithm>#include <stack>#include <utility>typedef long long ll;using namespace std;const int mx = 10000009;int p[mx],num[mx],pri[200];bool tag[mx];int cnt,N;void get_prime(){ int i,j; cnt = 0; N = mx; for(i = 2; i < mx; i++) { if(!tag[i]) { p[cnt++] = i; } num[i] = p[cnt - 1]; for(j = 0; p[j] * i < N && j < cnt; j++) { tag[i * p[j]] = 1; if(i % p[j] == 0) break; } }}void get(){ int i,j,k; for(i = 4; i < 200; i += 2) { for(j = 2; j < i; j++) if(!tag[j]&&!tag[i - j]) { pri[i] = j;// printf("i = %d j =%d\n",i,j); break; } }}int main (){ int n; int a,b,c,d; get_prime(); get(); while(~scanf("%d",&n)) { if(n < 8) { printf("Impossible.\n"); continue; } if(n < 200) { if(n&1) { a = 2; b = 3; } else { a = 2; b = 2; } } else { if(n&1) { a = 2; b = num[n - 30]; } else { a = 3; b = num[n - 30]; } } n = n - a - b; c = pri[n]; d = n - c; printf("%d %d %d %d\n",a,b,c,d); }}
0 0
- 10168 Summation of Four Primes
- summation of four primes
- uva 10168 summation of four primes
- Uva 10168 Summation of Four Primes 素数
- UVA-10168 Summation of Four Primes
- UVa 10168 - Summation of Four Primes
- Uva 10168 - Summation of Four Primes
- UVa 10168 Summation of Four Primes
- 110705 Summation of Four Primes
- Summation of Four Primes - PC110705
- UVa Problem Solution: 10168 - Summation of Four Primes
- PC/UVa 110705/10168 Summation of Four Primes
- (数论2.1.2)UVA 10168Summation of Four Primes(欧拉筛法)
- UVA 10168 Summation of Four Primes(数论)
- uva 10168 Summation of Four Primes(数论-哥德巴赫猜想)
- UVa 10168 Summation of Four Primes(数论-哥德巴赫猜想)
- UVaOJ-10168-Summation of Four Primes 解题报告
- 数论刷题-uva【10168】- Summation of Four Primes
- vc中json文件的读取、修改和添加字段的方法
- 关于SoftReference
- 一个模拟strstr()函数的程序
- JavaScript核心——闭包
- Flex实现自定义图形按钮+按钮区域响应
- 10168 Summation of Four Primes
- bzoj 1146树链剖分
- HDU 5229 【水题】
- 在Web工程下读取文件的几种方法
- UAP拓展按钮自定义功能方法步骤
- 跨浏览器兼容的HTML5视频音频播放器
- linux tar 命令
- 详解Java解析XML的四种方法
- ajax 笔记--二级联动