【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
package com.share.test01_10;
/**
* 【程序4】题目:<br>
* 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*
* @author brx
*
*/
public class Test04 {
public static void main(String[] args) {
test(90);
}
/**
* 思路:将一个数n,与从2~n-1依次相除,如果能够被其中的2整除,将这个数继续整除直到不能被2整除,才继续除以3,依次类推<br>
* 关键点:<br>
* 1.将整除后的数赋给n,在整除后将除数减少1,进入下次循环时再次判断该除数,如果不能则进入循环将除数加1,让这个行为反复执行,而省掉了递归。
* 2.因为从2开始一直除直到不能被2除,说明后面就是奇数了,接下来是被3整除直到不能被3整除,依次下去,直接实现了所有的除数是质数,
* 不用去判断除数是不是质数了.<br>
* 所以这种思路很巧妙,省去了递归和除数的质数判断。
*/
public static void test(int n) {
System.out.print(n + "=");
for (int i = 2; i < n; i++) {
if (n % i == 0) {
System.out.print(i + "x");
n = n / i;
i--;
}
}
System.out.println(n);
}
}
网友评论