java的一些特殊数字算法

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

转载于:https://www.cnblogs.com/timelyxyz/archive/2012/12/19/2825371.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值