蓝桥-质数拆分
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
将 20192019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法?
注意交换顺序视为同一种方法,例如 2 + 2017 = 20192+2017=2019 与 2017 + 2 = 20192017+2=2019 视为同一种方法。
运行限制
最大运行时间:1s
最大运行内存: 128M
public class Main {
static int count = 0, n = 0 ;
static int [] prime = new int [2019];
static long [] f = new long[2021] ;
public static boolean isPrime(int n){
if(n == 1){
return false ;
}
for(int i=2; i<n; i++){
if(n % i == 0){
return false ;
}
}
return true ;
}
public static void main(String[] args) {
for(int i=1; i<=2019; i++){
if(isPrime(i)){
prime[n] = i ;
n ++ ;
}
}
f[0] = 1 ;
for(int i=0; i<n; i++){
for(int j=2019; j>=prime[i]; j--){
f[j] += f[j-prime[i]] ;
}
}
System.out.println(f[2019]);
}
}