1. 素数(质数)

素数(质数)的定义:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数

  1. public boolean isPrime(int n){
  2. if(n<4){
  3. return n>1;
  4. }
  5. for(int i=1;i<n;i++){
  6. if(n%i==0){
  7. return false;
  8. }
  9. }
  10. return true;
  11. }

2. 水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),
水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)
三位的水仙花数共有4个:153,370,371,407;

四位的四叶玫瑰数共有3个:1634,8208,9474;
五位的五角星数共有3个:54748,92727,93084;
六位的六合数只有1个:548834;
七位的北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的八仙数共有3个:24678050,24678051,88593477

  1. public boolean isNarcissistic(int n){
  2. //参数在[100,1000)间的整数
  3. int a=n/100;
  4. int b=(n%100)/10;
  5. int c=n%10;
  6. if(n==a*a*a+b*b*b+c*c*c){
  7. return true;
  8. }
  9. return false;
  10. }

3. 完全数

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。


例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。第三个完全数是496,有约数1、2、4、8、16、31、62、124、248、496,除去其本身496外,其余9个数相加,1+2+4+8+16+31+62+124+248=496。后面的完全数还有8128、33550336等等

  1. public void isPerfect(int n){
  2. int sum=0;
  3. for(int i=1;i<n;i++){
  4. if(n % i==0){
  5. sum+=i;
  6. }
  7. }
  8. if(sum==n){
  9. return true;
  10. }
  11. return false;
  12. }

4. 迭代

4.1 案列一:Fibonacci Sequence(斐波那契数列)

即这样一个数列:0、1、1、2、3、5、8、13……,在数学上该数列定义为:
F(0)=0,F(1)=1; F(n) = F(n-1)+F(n-2) (n≥2,n∈N*)。

4.2 案例二:兔子问题

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少。

  1. public Integer f(int n){
  2. if(n==1|n==2){
  3. return 1;
  4. }
  5. return f(n-1)+f(n-2);
  6. }

5. 统计和排序

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数,按个数由低到高依次输出。

  1. // 使用lambda表达式
  2. public static List<Map.Entry<Character, Integer>> strStat(String str){
  3. char[] chars = str.toCharArray();
  4. HashMap<Character, Integer> hashMap = new HashMap<>();
  5. //遍历字符串,添加到hashmap中,并统计每个字符key出现的次数作为value
  6. for (int i = 0; i < chars.length; i++) {
  7. char tmp=chars[i];
  8. if(hashMap.containsKey(tmp)){
  9. hashMap.put(tmp,hashMap.get(tmp)+1);
  10. }else {
  11. hashMap.put(tmp,1);
  12. }
  13. }
  14. //根据value排序输出,将将hashmap转为arraylist,使用arraylist的比较器进行排序
  15. Set<Map.Entry<Character, Integer>> entries = hashMap.entrySet();
  16. ArrayList<Map.Entry<Character, Integer>> entryArrayList = new ArrayList<>();
  17. entryArrayList.addAll(entries);
  18. Collections.sort(entryArrayList,((o1, o2) -> o1.getValue()-o2.getValue()));
  19. return entryArrayList ;
  20. }