zoukankan      html  css  js  c++  java
  • prints out all ways to multiply smaller integers

    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);
    			}
    		}
    	}
    
    }
    

      

  • 相关阅读:
    google
    学习Linux第六天
    对比教学大纲
    周 记
    《世界是数字的》读后感
    《我是一只IT小小鸟》读后感
    前端小知识
    JavaScript 执行机制
    执行栈和任务队列
    支付宝前端员工培训手册
  • 原文地址:https://www.cnblogs.com/apanda009/p/8001556.html
Copyright © 2011-2022 走看看