题解 | #质数因子#

质数因子

http://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607

我们尽量减少循环,这样就能减少时间复杂度

public class Main{
    public static void main(String[] args) {
        // 处理输入
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            // 获取需要求解的值
            int target = sc.nextInt();
            int y = 2;// 因子从2开始算
            while(target != 1){ // 短除法,除到目标值为1为止
                if(target % y == 0) // 能能够整除2
                {
                    System.out.print(y+" ");
                    target /= y;
                }else{// 更新y的值
                    if(y > target / y) y = target;//如果剩余值为质数
                    else y++;  //y值增加1
                }
            }
        }
    }
}
全部评论
除以质数y小于y,代表target不能继续往下除了,小于y的前面都已经输出过了
2
送花
回复
分享
发布于 2023-01-08 17:18 江苏
除以质数y小于y,代表剩下唯一质因子是target了,在这里做这个判断减少运算量
1
送花
回复
分享
发布于 2023-04-20 11:58 上海
滴滴
校招火热招聘中
官网直投
(y > target / y) 这里怎么解释呢,想不通
点赞
送花
回复
分享
发布于 2022-10-17 22:24 上海
同问 (y > target / y)
点赞
送花
回复
分享
发布于 2022-11-01 02:03 广东
其实就范围控制,比如target 是81 最大的质数也顶多是小于9或者是他自己本身,9以后得再去迭代就没什么意义了
点赞
送花
回复
分享
发布于 2023-12-19 20:15 广东

相关推荐

头像
04-29 10:53
已编辑
东北大学 自动化类
点赞 评论 收藏
转发
65 7 评论
分享
牛客网
牛客企业服务