B.Prime Split
题意:
给一个整数n(1<=n<=4*10e4),将其分解成三个质数之和(算组合),问有多少种分法。
题解:
首先打表,将4*10e4内的所有质数从小到大预处理出来存在一个数组中,然后,对于每个n,先用两个for在小于n的所有质数中遍历第一个和第二个可能的质数,并且第二个不小于第一个,然后再用n减去第一个第二个可以得到第三个,并且第三个要满足不小于第二个,然后判断一下第三个是否为质数,若满足则ans++,复杂度大概为O(n2)。
#include<bits/stdc++.h>
using namespace std;
bool find(int n)
{
if(n<=1) return false;
for(int j=2;j*j