将任意自然数分解为质数的乘积(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] 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19611.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论