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

      

  • 相关阅读:
    Java 线程池原理分析
    基于 Java NIO 实现简单的 HTTP 服务器
    Java NIO之选择器
    Java NIO之套接字通道
    Django【基础篇-1】
    paramiko_sftp封装
    python random模块生成随机验证码
    Python3 os与sys模块用法
    python生成器并行实例
    python装饰器无参及有参案例
  • 原文地址:https://www.cnblogs.com/apanda009/p/8001556.html
Copyright © 2011-2022 走看看