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
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;
}
Another approach:
ReplyDeletepublic 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;
}
The solution does not work if you choose n = 105.
ReplyDeletebecause you cant divide by 0
Deleteshow bob and vegane
ReplyDeleteyesyes
DeleteAP-1 > dividesSelf
ReplyDeletepublic boolean dividesSelf(int n) {
ReplyDeleteboolean 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;
}
public boolean dividesSelf(int n) {
ReplyDeleteString 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;
}
public boolean dividesSelf(int n) {
ReplyDeletefor (int i = n; i > 0; i = i / 10) {
if (i % 10 == 0) return false;
if (n % (i % 10) == 0) continue;
return false;
}
return true;
}
How About Recursive Solution :)
ReplyDeletepublic 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;
}
public boolean dividesSelf(int n) {
ReplyDeleteint copy = n;
while (n != 0) {
if (n % 10 != 0 && (copy % (n % 10) == 0)) {
n /= 10;
} else {
return false;
}
}
return true;
}
public boolean dividesSelf(int n) {
ReplyDeletereturn check(n,n);
}
private boolean check(int num,int n){
if (n != 0) {
if (n % 10 == 0 || num % (n % 10) != 0) {
return false;
}
return check(num, n / 10);
}
return true;
}
public boolean dividesSelf(int n) {
ReplyDeletereturn check(n,n);
}
private boolean check(int num,int n){
if (n != 0) {
if (n % 10 == 0 || num % (n % 10) != 0) {
return false;
}
return check(num, n / 10);
}
return true;
}
public boolean dividesSelf(int n) {
ReplyDeletefor(int val = n; val != 0; val /= 10) {
int digit = val % 10;
if(digit == 0 || n % digit != 0)
return false;
}
return true;
}
if((n+"").contains("0")) return false;
ReplyDeleteString s = String.valueOf(n);
for(int i = 0; i<s.length(); i++) {
double d = n / Double.parseDouble(s.charAt(i)+"");
if(!String.valueOf(d).contains(".0")) return false;
}
return true;