1. 程式人生 > >用遞迴分解因數

用遞迴分解因數

有時候,我們需要對一個數字進行因數分解,我用遞迴幫我們做這件事情,如有不妥之處,還望各位朋友指正!

package com.aiy.test;

/**
 * @author aiyanbo
 * @email [email protected]
 */
import java.util.ArrayList;

public class Test {
	public static void main(String[] args) {
		Test test=new Test();
		for (Integer i : test.factor(64)) {
			System.out.print(i+"\t");
		}
	}
	private ArrayList<Integer> list=new ArrayList<Integer>(0);
	private void dissolution(int i){
		for(int j=2;j<i;j++){
			if(i%j==0){
				list.add(j);
				dissolution(i/j);
				break;
			}
		}
	}
	private void last(int i){
		int temp=1;
		for (Integer num : list) {
			temp*=num;
		}
		if(i/temp>=2)
			list.add(i/temp);
	}
	public ArrayList<Integer> factor(int i){
		dissolution(i);
		last(i);
		return list;
	}
}

相關推薦

分解因數

有時候,我們需要對一個數字進行因數分解,我用遞迴幫我們做這件事情,如有不妥之處,還望各位朋友指正! package com.aiy.test; /** * @author aiyanbo * @email [email protected] */ impo

法求因式分解

偶爾在網上看到這個題目,但是他們所用的方法,無論是迭代還是遞迴,感覺都不夠簡潔。我想,這個看起來很簡潔的抽象,應該有簡單的方法,後來終於想出來了。 求一個整數的分解因式,如36=2*2*3*3; 程式

11月02日(第4天_八皇后、因數分解、階乘))

今天主要講了八皇后、遞迴。 1. (1) 八皇后問題:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。目前用圖論的方法解出92種結果。 其中的8種結果是在每行依次填[0,2,4

【原始碼】將一個整數的每位數分解並按逆序放入一個數組中(演算法)(C語言實現)

幫朋友做的,好像是一個面試題。如果僅僅是考察遞迴的話,應該是夠了,程式的健壯性和通用性都很一般的說…… #include <stdio.h> #include <stdlib.h&g

逆序棧

import java.util.Stack; class Solution {     private static void reverse(Stack<Integer> s)

分別、迴圈、bisect實現二叉查詢(python實現)

1、遞迴實現二叉查詢 def binary_search_recursion(lst,target,low,high): if high < low: return None middle = (low + high)//2 if lst[middl

一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求第30位數是多少, 演算法實現。//斐波那契數列

1 public class MainClass 2 { 3 public static void Main() 4 { 5 Console.WriteLine(Foo(30)); 6 } 7 public static int Foo(int i) 8 {

C語言實現n^k(不考慮k<0的情況)

#include<stdio.h> #include<stdlib.h> int n_power_k(int n,int k){ if (k == 0) { return 1; } return n*n_power_k(n,k-1)

求第n個斐波那契數(分別和非兩種方法求解)

斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55……這個數列從第3項開始,每一項都等於前兩項之和。 這裡分別用遞迴和非遞迴的方法實現: 遞迴 #define _CRT_SECURE_NO_WARNINGS 1 #include&l

方法計算斐波那契數列

參考: https://blog.csdn.net/xuzhangze/article/details/78568702 波那契數列數列從第3項開始,每一項都等於前兩項之和。即 第n項的值為  (n-1) + (n-2) 例如:數列 1, 1, 2, 3, 5, 8, 13, 21

方法輸出目錄下所有的檔名

# !/bin/bash function echo_name() { #shell會執行反引號中的內容(命令) for file in `ls $1` do if [ -d $1'/'$file ] then echo_name $1'/'$file else ech

求斐波那契數

斐波那契數是第一個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示: int fib(int m) {     if (m == 1 || m == 2)         

猴子吃桃問題,和非方法

猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。   public class Test{ &nb

將巢狀的JSON物件遍歷出來,轉為二維陣列

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

斐波那契數列還是迴圈好

/** * */ /** * @author jueying: * @version 建立時間:2018-11-15 下午10:21:26 * 類說明 */ /** * @author jueying * */ public class Test12

File-刪除某資料夾(資料夾下可能有檔案或資料夾)

利用遞迴演算法刪除某資料夾(包括其所有的子檔案及資料夾) import java.io.File; public class Dem01 { public static void main(String[] args) { File file = new F

LeetCode 50 Pow(x, n) —— 可分治問題降低複雜度

起初拿到這個問題,感覺這絲毫不像是中等難度題,一個迴圈即可解決問題。大鍵盤一揮寫出如下程式碼: class Solution { public: double myPow(double x, int n) { double sum; int t;

python實現斐波那契數列 實現求第N個菲波那切數列

斐波那契數列即著名的兔子數列:1、1、2、3、5、8、13、21、34、…… 數列特點:該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單: a=0 b=1 while b < 1000: print(b) a, b = b, a+b

python篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List,然後從第0位開始,如果後面的能被這個數整除,則從陣

java篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習

本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>,然後從第0位開始,如