Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions leetcode/0728.Self-Dividing-Numbers/728.Self Dividing Numbers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package leetcode

func selfDividingNumbers(left int, right int) []int {
var ans []int
for num := left; num <= right; num++ {
if selfDividingNum(num) {
ans = append(ans, num)
}
}
return ans
}

func selfDividingNum(num int) bool {
for d := num; d > 0; d = d / 10 {
reminder := d % 10
if reminder == 0 {
return false
}
if num%reminder != 0 {
return false
}
}
return true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package leetcode

import (
"fmt"
"testing"
)

type question728 struct {
para728
ans728
}

// para 是参数
type para728 struct {
left int
right int
}

// ans 是答案
type ans728 struct {
ans []int
}

func Test_Problem728(t *testing.T) {

qs := []question728{

{
para728{1, 22},
ans728{[]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22}},
},

{
para728{47, 85},
ans728{[]int{48, 55, 66, 77}},
},
}

fmt.Printf("------------------------Leetcode Problem 728------------------------\n")

for _, q := range qs {
_, p := q.ans728, q.para728
fmt.Printf("【input】:%v ", p)
fmt.Printf("【output】:%v \n", selfDividingNumbers(p.left, p.right))
}
fmt.Printf("\n\n\n")
}
68 changes: 68 additions & 0 deletions leetcode/0728.Self-Dividing-Numbers/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# [728. Self Dividing Numbers](https://leetcode-cn.com/problems/self-dividing-numbers/)

## 题目

A self-dividing number is a number that is divisible by every digit it contains.

- For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.

A self-dividing number is not allowed to contain the digit zero.

Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right].

**Example 1:**

Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]

**Example 2:**

Input: left = 47, right = 85
Output: [48,55,66,77]

**Constraints:**

- 1 <= left <= right <= 10000

## 题目大意

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

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

自除数 不允许包含 0 。

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。

## 解题思路

- 模拟计算

# 代码

```go
package leetcode

func selfDividingNumbers(left int, right int) []int {
var ans []int
for num := left; num <= right; num++ {
if selfDividingNum(num) {
ans = append(ans, num)
}
}
return ans
}

func selfDividingNum(num int) bool {
for d := num; d > 0; d = d / 10 {
reminder := d % 10
if reminder == 0 {
return false
}
if num%reminder != 0 {
return false
}
}
return true
}
```