继续刷水题= =||分拆素数和 HDU 2098
来源:互联网 发布:rnm网络是什么意思 编辑:程序博客网 时间:2024/05/22 04:33
分拆素数和
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 24635 Accepted Submission(s): 10727
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30260
Sample Output
32
Source
2007省赛集训队练习赛(2)
我的方法:开两个数组,一个用来标记哪个数是否为素数---用来判断,另一个用来存取素数 ----用来计算另一个素数
代码:
#include <iostream>#include <cstring>#include <stdlib.h>using namespace std;bool primelist[10001];//注意这里全局变量初始值为false,所以true代表不是素数int primes[5000];int makePrimelist(){ int i,j; primelist[1] = true; for(i = 4;i <= 10000;i+=2) primelist[i] = true; for(i = 3;i <= 100;i+=2) { if(!primelist[i]) for(j = i*i;j <=10000;j+=i) primelist[j] = true; } j = 0; for(i = 1;i <= 10000; i++) if(!primelist[i]) primes[j++] = i; return j;}int main(){ int n,len,i; int flag; len = makePrimelist(); //for(i = 0;i <len;i++) //cout << primes[i] << endl;//调试代码 while(cin >> n && n) { flag = 0; for(i = 0;i < len;i++) if(n - primes[i] > 0 && !primelist[n-primes[i]]) flag++;//先用n减去一个素数,在判断(n-一个素数)是否为素数,是则标记变量加一 cout << flag/2 << endl; } return 0;}
0 0
- 继续刷水题= =||分拆素数和 HDU 2098
- HDU 2098 分拆素数和(素数)
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 - 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- Hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu-2098-分拆素数和。。。
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和 水题
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 分拆素数和
- windows系统漏洞挖掘技术
- 算法导论第四章:最大子数组—递归,暴力和线性算法
- SELECT语句中的for update的用法
- PAT 三角形判断 Java版本
- Java之反射类的构造函数,通过单元测试反射创建类的对象
- 继续刷水题= =||分拆素数和 HDU 2098
- Android中的Bitmap集锦
- 数据结构的重要性
- Oracle的共享锁和排它锁
- html5(历史管理)
- servlet验证码
- popViewControllerAnimated 之后不走deallloc的几个原因:
- Java向前引用容易出错的地方
- Ants poj 1852