## Problem:

We'll say that a positive int divides itself if every digit in the number divides into the number evenly. So for example 128 divides itself since 1, 2, and 8 all divide into 128 evenly. We'll say that 0 does not divide into anything evenly, so no number with a 0 digit divides itself. Note: use % to get the rightmost digit, and / to discard the rightmost digit.

dividesSelf(128) → true
dividesSelf(12) → true
dividesSelf(120) → false

## Solution:

public boolean dividesSelf(int n) {  int tmp = n;  if (n%10 == 0)    return false;  while(n != 0)  {   if (tmp % (n%10) != 0)     return false;    n /= 10;  }        return true;  }

1. Another approach:

public boolean dividesSelf(int n) {

String val = String.valueOf(n);

for (int i=0; i<val.length(); i++) {

if (val.substring(i, i+1).equals("0"))

return false;

else if (n%Integer.valueOf(val.substring(i, i+1))!=0)

return false;
}
return true;
}

2. The solution does not work if you choose n = 105.

1. because you cant divide by 0

3. show bob and vegane

4. AP-1 > dividesSelf

5. public boolean dividesSelf(int n) {
boolean run = true;
int b = n;
while (b/10!=0||b>0)
{
if (b%10==0)
return false;
if (n%(b%10)!=0)
return false;
b=b/10;
}
return true;
}

6. public boolean dividesSelf(int n) {
String str= Integer.toString(n);

for (int i =0; i< str.length(); i++)
{
char a= str.charAt(i);
int c = Character.getNumericValue(a);
if (c ==0)
return false;

if (n%c !=0)
return false;

}
return true;
}

7. public boolean dividesSelf(int n) {
for (int i = n; i > 0; i = i / 10) {
if (i % 10 == 0) return false;
if (n % (i % 10) == 0) continue;
return false;
}
return true;
}

8. How About Recursive Solution :)

public boolean dividesSelf(int n) {
return check(n,n);
}

public boolean check(int num,int n){
if(n==0)return true;
if( (n%10)==0 || num%(n%10)!=0) return false;
if(check(num,n/10))return true;
return false;

}