您的位置:首页 > 其它

整数的素数和分解问题

2015-06-09 10:36 344 查看
歌德巴赫猜想说任何一个不小于 6 的偶数都可以分解为两个奇素数之和。

对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。

对于一个给定的整数,输出所有这种素数和分解式。

注意,对于同构的分解只输出一次(比如 5 只有一个分解 2 + 3,而 3 + 2 是 2 + 3 的同构

分解式)。

例如, 对于整数 8,可以作为如下三种分解:

(1) 8 = 2 + 2 + 2 + 2

(2) 8 = 2 + 3 + 3

(3)
8 = 3 + 5

import java.util.ArrayList;
import java.util.List;

public class DecomposeNumber {
static List<Integer> tmp = new ArrayList<Integer>();
private static void getPrimeArr(int n, List<Integer> list)
{
list.add(2);
for(int i=3;i<=n;++i)
{
int k;
for(k=2;k*k<=i;++k)
if(i%k==0)
break;
if(k*k>i)
list.add(i);
}
}
public static void solution(int n, int start, List<Integer> list){
if(n<0){
return;
}else if(n==0){
for(int i: tmp){
System.out.print(i+" ");
}
System.out.println("");
}else{
int num = list.size();
for(int i=start;i<num;i++){
tmp.add(list.get(i));
solution(n-list.get(i),i,list);
tmp.remove(list.get(i));
}
}
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
getPrimeArr(8,list);
solution(8,0,list);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: