如果一个数能够被组成它的各个非0数字整除,则称它是完美数。例如:1-9都是完美数,10,11,12都是完美数,但是13就不是完美数(因为13不能被组成它的数字“1”和“3”整除)。 现在给定正整数x,y,求x和y之间(包含x和y)一共有多少个完美数。输入数据1<=x<=y<=2000000000。 例如: x = 1, y = 13,输出12; x = 13,y = 13,输出0; x = 100,y = 1000,输出106。
挑战规则:
public class Test01 {
static int test(int x,int y){
int res =0;
if(1<=x && x<=y && y<=2000000000){
int number = x;
int b = y-x;
for(int i=0;i<=b;i++){
String numberStr = String.valueOf(number);
int length=numberStr.length();
if(length==1){
res++;
}else{
boolean flag = true;
for(int j =0;j<length;j++){
int meiyiwei = Integer.valueOf
(numberStr.substring(j, j+1));
if(meiyiwei!=0 && number % meiyiwei != 0){
flag = false;
}
}
if(flag){
res++;
}
}
number+=1;
}
}
return res;
}
public static void main(String[] args) {
System.out.println(Test01.test(100, 1000));
}
}