分拆素数和(数论)
2016-04-10 08:47
381 查看
B -
分拆素数和
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
SubmitStatusPracticeHDU
2098
Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
Sample Output
分拆素数和
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
SubmitStatusPracticeHDU
2098
Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30 26 0
Sample Output
3 2 #include <iostream> #include <cstdio> using namespace std; const int MAXN = 1e6; int prime[MAXN]; bool is_prime[MAXN+1]; int main() { int num, i, j, ans; int p = 0, n = 1000000; for( int i = 0; i<n; i++ ) is_prime[i] = true; is_prime[0] = is_prime[1] = false; for(int i = 2; i<=n; i++ ) { if(is_prime[i]) { prime[p++] = i; for( int j = 2*i; j<=n; j+=i ) is_prime[j] = false; } } while( cin >> num && num ) { ans = 0; for( i=0; i<num; i++ ) { if( prime[i]>num ) break; for( j=i+1; j<num; j++ ) { if( prime[j] >num ) break; if(prime[i]+prime[j] == num) { ans++; break; } } } cout << ans << endl; } return 0; } 水题。。。但是做的很爽
相关文章推荐
- excel单元格对齐方式
- PHP isset()与empty()的使用区别详解
- oracle学习之二:oracle常用命令
- oracle学习之一:Oracle的安装与卸载
- Hibernate单向多对一关联
- java中的自动类型转换和强制类型转换
- angular学习笔记
- 图解25匹马的选马问题
- (译)OpenGL ES2.0 – Iphone开发指引------------非常不错,关于opengl ls的说明
- 仿华为系统自带天气预报UI---线条圆圈控件
- excel文字格式设置
- 47. Permutations II
- CSS创建图片库&透明图片&媒介类型
- ArrayList和数组的相互转换
- Python中reactor,factory,protocol
- 项目Makefile书写示例(二)
- sql语句备忘
- Socket心跳包机制
- corethink功能模块探索开发(十五)后台新增按钮
- 项目经理评分