问题描述:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
代码:
public class Number {
public void figue(int n) {
int k = 2; //质数
System.out.print(n+"=");
while (k != n) {
if (n % k == 0) {
System.out.print( k+"*");
n = n / k;
} else {
k++;
}
}
System.out.print( + k);
}
public static void main(String[] args) {
System.out.println("输入一个>=0 的数字");
Scanner sc = new Scanner(System.in);
// String number =new Scanner(System.in).nextLine();
int num = Integer.parseInt(sc.nextLine());
// Number number1 = new Number();
System.out.println("result is follow:");
// Number.figue(num);
new Number().figue(num);
}
}
结果:
讨论:
一开始 用的 fori 循环,但是不太好写,然后改成while 循环,
写完之后,想了想,也可以用for循环,其中 i就是质数k,
跳出循环的条件:if(i==n){
sout(" i") ; break; }