HDU 2098 分拆素数和
Posted Not-Bad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2098 分拆素数和相关的知识,希望对你有一定的参考价值。
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
先打素数表,再一个一个判断,水
不知道为啥,编译错误
#include <cstdio> #include <iostream> #include <cmath> using namespace std; int prime[10000]; void init_prime() { int i, j; for(i = 2;i <= sqrt(10001.0); ++i) { if(!prime[i]) for(j = i * i; j < 10001; j += i) prime[j] = 1; } j = 0; for(i = 2;i <= 10001; ++i) if(!prime[i]) prime[j++] = i; } bool f(int N,int i) { int t = N - prime[i]; for(int j = i + 1;prime[j] < N;j++) if( t == prime[j])return true; return false; } int main() { int N; init_prime(); while(cin >> N){ if( N == 0 )break; int n = 0; for(int i = 0;prime[i] < N /2;i++){ if(f(N,i))n++; } cout << n << endl; } //system("pause"); return 0; }
选错语言了,尴尬....
HDU选C++ !!!
以上是关于HDU 2098 分拆素数和的主要内容,如果未能解决你的问题,请参考以下文章