将任意自然数分解为质数的乘积(Java实现)

方法一:外层while循环

package com.jake.primefactor;

import java.util.ArrayList;
import java.util.List;

public class PrimeFactor {
    public static List<Integer> calc(int number) {
        List<Integer> factors = new ArrayList<>();

        while (number > 1) {
            for (int factor = 2; factor <= number; factor++) {
                if (number % factor == 0 && number > factor) {
                    factors.add(factor);
                    number = number / factor;
                    break;
                }
            }
        }

        return factors;
    }
}

方法二:内层while循环

package com.jake.primefactor;

import java.util.ArrayList;
import java.util.List;

public class PrimeFactor {
    public static List<Integer> calc(int number) {
        List<Integer> factors = new ArrayList<>();
        
        if (number >= 2) {
            for (int factor = 2; factor < number; factor++) {
                while (number % factor == 0 && number > factor) {
                    factors.add(factor);
                    number = number / factor;
                }
            }
            factors.add(number);
        }
        
        return factors;
    }
}

测试:

import com.jake.primefactor.PrimeFactor;

public class Main {

    public static void main(String[] args) {
        for (int i = 0; i <= 100; i++) {
            System.out.println(i + ": " + PrimeFactor.calc(i));
        }
    }
}

测试结果:

0: []
1: []
2: [2]
3: [3]
4: [2, 2]
5: [5]
6: [2, 3]
7: [7]
8: [2, 2, 2]
9: [3, 3]
10: [2, 5]
11: [11]
12: [2, 2, 3]
13: [13]
14: [2, 7]
15: [3, 5]
16: [2, 2, 2, 2]
17: [17]
18: [2, 3, 3]
19: [19]
20: [2, 2, 5]
21: [3, 7]
22: [2, 11]
23: [23]
24: [2, 2, 2, 3]
25: [5, 5]
26: [2, 13]
27: [3, 3, 3]
28: [2, 2, 7]
29: [29]
30: [2, 3, 5]
31: [31]
32: [2, 2, 2, 2, 2]
33: [3, 11]
34: [2, 17]
35: [5, 7]
36: [2, 2, 3, 3]
37: [37]
38: [2, 19]
39: [3, 13]
40: [2, 2, 2, 5]
41: [41]
42: [2, 3, 7]
43: [43]
44: [2, 2, 11]
45: [3, 3, 5]
46: [2, 23]
47: [47]
48: [2, 2, 2, 2, 3]
49: [7, 7]
50: [2, 5, 5]
51: [3, 17]
52: [2, 2, 13]
53: [53]
54: [2, 3, 3, 3]
55: [5, 11]
56: [2, 2, 2, 7]
57: [3, 19]
58: [2, 29]
59: [59]
60: [2, 2, 3, 5]
61: [61]
62: [2, 31]
63: [3, 3, 7]
64: [2, 2, 2, 2, 2, 2]
65: [5, 13]
66: [2, 3, 11]
67: [67]
68: [2, 2, 17]
69: [3, 23]
70: [2, 5, 7]
71: [71]
72: [2, 2, 2, 3, 3]
73: [73]
74: [2, 37]
75: [3, 5, 5]
76: [2, 2, 19]
77: [7, 11]
78: [2, 3, 13]
79: [79]
80: [2, 2, 2, 2, 5]
81: [3, 3, 3, 3]
82: [2, 41]
83: [83]
84: [2, 2, 3, 7]
85: [5, 17]
86: [2, 43]
87: [3, 29]
88: [2, 2, 2, 11]
89: [89]
90: [2, 3, 3, 5]
91: [7, 13]
92: [2, 2, 23]
93: [3, 31]
94: [2, 47]
95: [5, 19]
96: [2, 2, 2, 2, 2, 3]
97: [97]
98: [2, 7, 7]
99: [3, 3, 11]
100: [2, 2, 5, 5]
发布了79 篇原创文章 · 获赞 322 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_15329947/article/details/89448006
今日推荐