码迷,mamicode.com
首页 > 其他好文 > 详细

prints out all ways to multiply smaller integers

时间:2017-12-08 01:13:18      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:rgs   div   out   note   arp   style   bsp   import   color   

Write a program that takes an integer and prints out all ways to multiply smaller integers that equal the original number, 
without repeating sets of factors. In other words, if your output contains 4 * 3,
you should not print out 3 * 4 again as that would be a repeating set. Note that this is not asking for prime factorization only.
Also, you can assume that the input integers are reasonable in size; correctness is more important than efficiency. Eg: PrintFactors(12) 12 * 1 6 * 2 4 * 3 3 * 2 * 2

 

public class PrintFactors {
	public static void main(String[] args) {
		printFactor(100);
	}

	private static void printFactor(int n) {
		if (n <= 0) {
			System.out.print("Wrong input!");
			return;
		}
		if (n == 1) {
			System.out.print("1");
			return;
		}
		long[] a = new long[n/2];
		findFactor(n/2, n, a, 0);

	}

	private static void findFactor(long i, long n, long[] arr, int index) {
		if (i == 1) {
			if (n == 1) {
				for (int k = 0; k < index - 1; k++) {
					System.out.print(arr[k]);
					if (k < index - 2) {
						System.out.print("*");
					}
				}
				System.out.println();

			}
			return;
		}
		for (long k = i; k >= 1; k--) {
			if (n % k == 0) {
				arr[index] = k;
				findFactor(k, n / k, arr, index + 1);
			}
		}
	}

}

  

prints out all ways to multiply smaller integers

标签:rgs   div   out   note   arp   style   bsp   import   color   

原文地址:http://www.cnblogs.com/apanda009/p/8001556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!