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 }
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 }
昨天有点闲,整理了下以前的一些特殊数字的算法,做个笔记。