自除数 是指可以被它包含的每一位数除尽的数。
例如,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]
#include<stdio.h>
bool isSubdivsion(int n){
if(n==0){
return false;
}else{
int k=n;
while(k!=0){
int a=k%10;
if(a==0){
return false;
}
if(n%a!=0){
return false;
}
k=k/10;
}
return true;
}
}
int main(){
int left,right;
scanf("%d%d",&left,&right);
for(int i=left;i<=right;i++){
if(isSubdivsion(i)){
printf("%d ",i);
}
}
return 0;
}
心得:这道题主要是直接判断数字是否为0,然后判断数字是否是自除数。在判断自除数的时候要先判断数字的某一位是否为0,然后判断数字能否被这一位除尽。容易忘记的一点就是在判断是否是自除数的时候数字的某位是否为0这一点。