求质数因子

描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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
            }
        }
    }
}
posted @ 2023-01-29 16:06  来一杯coffee  阅读(60)  评论(0编辑  收藏  举报