质因子分解(洛谷P2043题题解,Java语言描述)

题目要求

P2043题目链接

在这里插入图片描述

分析

这题也不是很容易理解的一个题呐……

我们可以开个数组,存质数个数。
数组元素先按照默认的全为0,以便输出时判断。
然后 1, 2, 3, …, n 分别求质因子。
这方法特别强的是:不用判断是不是质数
理由:因为每个质因子我们都一直除,直到不能再除,以后也不会出现可以除的数是此数的倍数了,相当于已经筛掉了。

AC代码(Java语言描述)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        int[] array = new int[num+1];
        for (int i = 2; i <= num; i++) {
            int temp = i;
            for (int j = 2; j <= i; j++) {
                while (temp % j == 0) {
                    array[j]++;
                    temp /= j;
                }
            }
        }
        for (int i = 1; i <= num;i++) {
            if (array[i]!=0) {
                System.out.println(i + " " + array[i]);
            }
        }
        scanner.close();
    }
}
发布了479 篇原创文章 · 获赞 972 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104237540