您的位置:首页 > 其它

将正整数n划分成k个不同正整数的乘积,输出所有划分方法

2013-10-02 20:09 309 查看
//将正整数n划分成k个不同的正整数(不大于max)的乘积,输出所有划分方法,如果不能则输出“无法划分”
public class MultiDivision {
public static boolean multiDivide(int n, int k, int max, int[] buf){
if(max == 0)
return false;
if(k==1)
if(n<=max){
buf[buf.length-k] = n;
for(int i:buf)
System.out.print(i+" ");
System.out.println();
return true;
}else{ //不能划分为k个
return false;
}
boolean flag = false;
for(int factor=max; factor>0; factor--){
if(n%factor == 0){//递归测试该因子是否是结果的一部分
buf[buf.length-k] = factor;
boolean f = multiDivide(n/factor, k-1, factor-1, buf);
flag = flag || f;
}
}
return flag;
}

public static void main(String[] args){
int k=5, n=2015;
int[] buf = new int[k];
if(!multiDivide(n, k, 10, buf)){
System.out.println("无法划分");
}
n = 2016;
if(!multiDivide(n, k, 10, buf)){
System.out.println("无法划分");
}
}
}

无法划分
9 8 7 4 1
8 7 6 3 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐