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[i] == 0&&hash[m-i]==0)&&i!=m-i)
{
num++;
}
}
printf("%d\n", num);
num = 0;
}
}
return 0;
}
标签:10000,int,40,++,素数,num,分拆,hash 来源: https://www.cnblogs.com/VictorierJwr/p/12408807.html