Java题解将正整数分解质因数
例如:打印:90=2 * 3 * 3*5。
设计思路:
首先在2到该数范围内能被每次变量数整除才有意义,因为第一数加1从2开始,0和1在取余和除取整上没有意义,其二,每次如果能被每次变量数整除,那么该数是原来数的因数,否则,变量加1需要下一个能被整除的数,同时满足被整除的数应当直接除于该变量数,把整数继续循环对变量数取余数或者取整。
直到变量数和每次改变了的被除数相等的时候跳出循环输出满足条件的因数查看相乘是否为原来的数。
package com.demo7;
public class Test4 {
public static void main(String[] args) {
//4.题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
//当前给定数取模为0可除尽。则再用除数和变量数取模和取余,直到取余不为0,
// 再加1取模重复操作。变量取到不满足在给定数到2范围内跳出循环
//即在2到该数的范围内找能够被该数整除的数,得到的除数当下一次的被除数,直到不满足取模。判断下一个除数
int number=24;
printFactor(number);
}
public static void printFactor(int number){//首先0和1没有意义除外,从2开始
int i=2;
System.out.print(number+"=");
while (i<=number){//每次传回的number都是当下i-1能整除的整数
if (i==number){//如果变量i和number相等时说明已经没有其它因数了,可以直接跳出循环
System.out.println(number);
break;
}else if (number%i==0){//如果满足取余为0,则当前的number是能被i整数的
System.out.print(i+"*");
number/=i;//然后对用当前的number做被除数为下次的number判断条件
}else {//如果不满足被除数和变量i除数整除的情况下,i+1进入下次循环
i++;
}
}
}
}