问题描述 :
把一个偶数拆成两个不同素数的和,有几种拆法呢?
说明:
比如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
完整C++代码
直接先计算出一些素数,然后在里面取就好
#include <bits/stdc++.h>
using namespace std;
bool sushu(int num) {
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main()
{
vector<int> vec;
vec.push_back(2);
for (int i = 3; i < 10010; i++) {
if (sushu(i)) vec.push_back(i);
}
int T;
cin >> T;
while (T--) {
int n;
cin >> n;
int num = 0;
for (int i = 0; ; i++) {
if (vec[i] >= n / 2) {
break;
}
int t = n - vec[i];
if (count(vec.begin(), vec.end(), t)) {
num++;
}
}
cout << num << endl;
}
return 0;
}
😋欢迎大伙私信或者评论区交流讨论😋