* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
* 分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
*(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
*(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
*(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
*这个题目很明显是要用递归算法来实现的,打印“*”有些技巧,但也很容易解决,程序如下:
import java.util.Scanner; public class Yinshifenjie { public static void fenjie(int n) { for (int i=2;i <=n;i++) { if (i == n) { System.out.print(i); return; } if (n > i && (n % i == 0)) { System.out.print(i+"*"); fenjie(n / i); break; } } } public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入一个整数:"); int n = input.nextInt(); fenjie(n); } } |