歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。 对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。 对于一个给定的整数,输出所有这种素数和分解式。 注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式 )。
public boolean prime(int n){
if(n<2) return false;
if(n==2) return true;
int len=(int)Math.sqrt(n)+1;
for(int i=2;i<=len;i++){
if(n%i==0){
return false;
}
}
return true;
}
public void solve(int n){
int[] a=new int[n];
int j=0;
for(int i=2;i<=n;i++){
if(prime(i)){
a[j++]=i;
}
}
int l=1< int k; for(int f:a) System.out.println(f); for(int i=0;i k=i; int m=0; int h=0; String s=""; while(k>0){ if((k&1)>0){ m+=a[h]; if(s=="") {s=s+a[h];} else s=s+"+"+a[h]; } h++; k>>=1; } if(m==n){ System.out.println(s); } } }