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

      

  • 相关阅读:
    《精通情绪》读书笔记
    绩效评估与绩效反馈
    数据分析报告格式zz
    学会谈判zz
    javascript中的双向绑定
    理解 DocumentFragment
    理解Object.defineProperty()
    Vue 改变数组中对象的属性不重新渲染View的解决方案
    ES6中Object.assign() 方法
    控制input输入框光标的位置
  • 原文地址:https://www.cnblogs.com/apanda009/p/8001556.html
Copyright © 2011-2022 走看看