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

      

  • 相关阅读:
    JDBC
    Maven入门初级教程
    os.path路径拓展 python3
    requests实现文件下载, 期间显示文件信息&下载进度_python3
    yield浅析-Python3
    Scoop
    U盘启动盘制作工具(安装Linux)
    JavaScript摘要笔记
    Hexo+Github搭建博客&各种设置
    Linux下搭建svn服务端
  • 原文地址:https://www.cnblogs.com/apanda009/p/8001556.html
Copyright © 2011-2022 走看看