zoukankan      html  css  js  c++  java
  • 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 } 
    昨天有点闲,整理了下以前的一些特殊数字的算法,做个笔记。
  • 相关阅读:
    SQL优化之博客案例
    Drools之规则属性
    Android 8.0以上系统应用如何保活
    Android 8.0(api27)静态广播和动态广播接收问题
    Android开发 WorkManager详解
    使用EOS Camera Movie Record 软件在计算机上使用 Canon EOS DSLR相机录制视频 。
    关于使用AlarmManager的注意事项
    系统服务之定时服务(AlarmManager)
    Android定时器AlarmManager
    Android 代码混淆
  • 原文地址:https://www.cnblogs.com/timelyxyz/p/2825371.html
Copyright © 2011-2022 走看看