求质数因子

描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如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 @   来一杯coffee  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示