求质数因子
描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
正常思路
public class Main{
public static void main(String[] args) {
// 处理输入
Scanner sc = new Scanner(System.in);
// 获取需要求解的值
int target = sc.nextInt();
int y = 2;// 因子从2开始算
while(y <= target){
if(target % y == 0) // 能够整除2
{
System.out.print(y+" ");
target /= y;
}else{
y++; //y值增加1
}
}
}
}
优化思路:当 y 增长到一定大小,则没必要再继续自增验证,因此可以增加一个判断,从而大大减少循环次数
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int target = sc.nextInt();
int y = 2;
while(y<=target){
if(target % y == 0) {
System.out.print(y+" ");
target /= y;
}else{// 更新y的值
if(y > target / y) y = target;// 当y>target/y时,剩余值为质数
else y++; //y值增加1
}
}
}
}