将正整数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
相关文章推荐
- 将一个正整数划分成若干正整数的和,输出每一种划分方法
- 给一个整数数组,对数组中的每个整数中的所有数字按照升序排列(如101排序后为011)请写一个方法,输出排序后的数组中的最大数。 例如有一个数组: 101、132、375,排序后11、123、357,
- 1、写一个函数返回参数二进制中 1 的个数(三种方法)2、获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列3、输出一个整数的每一位。4、两个int(32位)整数m和n的二进制表达中,有多
- 输出整数的所有划分
- Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数。
- 1.写一个函数返回参数二进制中 1 的个数;2..获取一个数二进制序列中所有的偶数位和奇数位;3. 输出一个整数的每一位;4.两个int整数的二进制表达中,有多少个位不同
- 输入正整数k,找到所有的正整数x>=y,使得1/k=1/x + 1/y; 样例输入: 2 12 样例输出: 2 1/2 = 1/6 + 1/3 1/
- 编程题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 整数划分问题:输出一个整数的所有划分并统计总划分数
- 输入一个正整数n,返回一个最小正整数m(m至少是2位数),使得m的各位乘积等于n,例如输入36,输出49,输入100,输出455,对于某个n不存在这样的m,请返回-1。
- java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
- 输入一个正整数n,输出一个最小正整数m,使得m的各位乘积等于n
- 利用递归方法输出1~10所有整数的阶乘
- 整数划分(递归法),这个程序是实现输出整数的划分有多少种方法,接下来第二篇会实现级能输出划分整数的因子和输出划分的种个数方法
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。
- 输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列
- 利用C语言来实现交换两个变量的值,由终端输入两个整数给变量x、y,然后交换x和y的值后,输出x和y。 有不同的方法
- 输出正整数分解的所有数的最大乘积
- 网易笔试题:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。