java的一些特殊數字演算法

來源:互聯網
上載者:User
 1 package specialNumber;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.HashSet;
 6 import java.util.Iterator;
 7 import java.util.List;
 8 import java.util.Set;
 9 
10 public class Sushu {
11 
12     public static void main(String[] args) {
13         List<Integer> result = new ArrayList<Integer>();
14         for (int i = 1; i < 100; i++) {
15             if (isWanshu(i))
16                 result.add(i);
17         }
18         System.out.println(result.size());
19         System.out.println(Arrays.toString(result.toArray()));
20     }
21 
22     /**
23      * 素數(質數)
24      */
25     public static boolean isSushu(int number) {
26         boolean flag = true;
27         // int mid = (int) Math.sqrt(number);
28         for (int j = 2; j * j <= number; j++) {
29             if (number % j == 0) {
30                 flag = false;
31                 break;
32             }
33         }
34         return flag;
35     }
36 
37     /**
38      * 完數
39      */
40     public static boolean isWanshu(int number) {
41         int mid = (int) Math.sqrt(number);
42         int sum = 1;
43         Set<Integer> set = new HashSet<Integer>();
44         for (int i = 2; i <= mid; i++) {
45             if (number % i == 0) {
46                 set.add(i);
47                 set.add(number / i);
48             }
49         }
50         Iterator<Integer> it = set.iterator();
51         while (it.hasNext()) {
52             int num = (Integer) it.next();
53             sum += num;
54         }
55         return sum == number;
56     }
57 
58     /**
59      * 水仙花數
60      */
61     public static boolean isShuixianhua(int number) {
62         char[] c = ("" + number).toCharArray();
63         int sum = 0;
64         for (int i = 0; i < c.length; i++) {
65             sum += Math.pow(Integer.parseInt(String.valueOf(c[i])), 3);
66         }
67         return sum == number;
68     }
69 
70     /**
71      * 平方迴文數
72      */
73     public static boolean isPingFangHuiWen(int number) {
74         boolean flag = true;
75         String str = number + "";
76         char[] c = str.toCharArray();
77         int length = str.length();
78         for (int j = 0; j <= length / 2; j++) {
79             if (c[j] != c[length - 1 - j]) {
80                 flag = false;
81                 break;
82             }
83         }
84         return flag && (Math.sqrt(number) % 1 == 0);
85     }
86 

87 } 昨天有點閑,整理了下以前的一些特殊數位演算法,做個筆記。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.