题解 | #质数因子#

质数因子

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

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    static ArrayList<Integer> factors = new ArrayList<>();

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        // 如果不是合数,就没有必要进行因式分解
        if (!isPrime(num)) {
            factorization(num);
            for (Integer factor : factors) {
                System.out.print(factor + " ");
            }
        } else {
            System.out.println(num);
        }
    }

    // 判断是不是质数
    private static boolean isPrime(int num) {
        boolean flag = true;
        // 若存在一个因数则不是质数
        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }

    // 寻找质因子的方法
    // 递归寻找
    private static void factorization(int num) {
        // 一个数经过多次因数分解,最后的时候相当于是自身也会变成一个质数
        if (isPrime(num)) {
            factors.add(num);
            // 到达递归的终点
            return;
        }
        for (int i = 2; i <= num / 2; i++) {
            if (num % i == 0) {
                factors.add(i);
                factorization(num / i);
                break;
            }
        }
    }
}

全部评论

相关推荐

头像
11-26 14:50
门头沟学院 C++
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务