40: 分拆素数和
40 分拆素数和 作者: xxx时间限制: 1S章节: 函数 问题描述 : 把一个偶数拆成两个不同素数的和,有几种拆法呢? 说明: 比如10,可以拆成3+7和5+5以及7+3, 但是3+7与7+3相同,只算一种,5+5由于两个素数相同,不计算在内。 因此,10的拆法只有一种。 输入说明 : 首先输入一个T(不超过500),然后输入T个正的偶数,其值不会超过10000。 输出说明 : 对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。 输入范例 : 4 4 6 8 10 输出范例 : 0 0 1 1 代码: #include <stdio.h> int main() { int hash[10000] = { 0 }; hash[0] = hash[1] = 1; for (int i = 2; i < 10000; i++) { if (hash[i] == 0) { for (int j = i + i; j < 10000; j = j + i) { hash[j] = 1; } } } int n, m; int num = 0; while (scanf("%d", &n) != EOF) { for (int k = 0; k < n; k++) { scanf("%d", &m); for (int i = 2; i < m/2; i++) { if ((hash