package com.leetcode.leetcode;

import java.util.ArrayList;
import java.util.List;

/**自除数 是指可以被它包含的每一位数除尽的数。

    例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。

    还有,自除数不允许包含 0 。

    给定上边界和下边界数字,输出一个列表,列表的元素是边界(含边界)内所有的自除数。

    示例 1:

    输入:
    上边界left = 1, 下边界right = 22
    输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
    注意:

    每个输入参数的边界满足 1 <= left <= right <= 10000。

    链接:https://leetcode-cn.com/problems/self-dividing-numbers*/

public class SelfDividingNumbers {

  public List<Integer> selfDividingNumbers(int left, int right) {
    List<Integer> list = new ArrayList<Integer>();
    for(int i = left;i<=right;i++){
      if (isDiv(i)) {
        list.add(i);
      }
    }
    return list;
  }

  public  boolean isDiv(int n) {
    int value = n;
    while (value > 0) {
      if (value%10 != 0 && n%(value%10) == 0) {
        value /= 10;
      }else {
        return false;
      }
    }
    return true;
  }

  public static void main(String[] args) {
    System.out.print(new SelfDividingNumbers().selfDividingNumbers(1,9999));
  }
}

github: https://github.com/pzzzsakura/leetcode/blob/master/src/main/java/com/leetcode/leetcode/SelfDividingNumbers.java

You Might Also Like

No Comments

Leave a Reply