超除算法

Algorithm for superdivide

本文关键字:算法      更新时间:2023-10-16

如果数字中的每个数字都除以数字,则 int 是超除法。示例 128 除以自身,因为128可以被不能被 0 整除1, 2, and 8的超除数

整除。
Sample Input #1
superDivide(184)
Sample Output #1
true
Sample Input #2
superDivide(39)
Sample Output #2
false
Sample Input #3
superDivide(120)
Sample Output #3
false

在此处输入代码

public class SuperDivide {
    public static void main(String[] args) {
        SuperDivide obj = new SuperDivide();
        boolean result = obj.checkSuper(1001);
        System.out.println(result);
    }
    public boolean checkSuper(int num){
        //write your code here
        int n1;
        int n2=num;
        if(num%10==0)
        return false;
        while(num>0){
            n1=num%10;
            if(n2%n1==0){
                num=num/10;
                return true;
            }
        }
        return false;

    }

上面的代码最多可以运行到数字,但不能运行到 3 位,有什么建议吗?

一些逻辑错误,如除以零和返回的错误放置:

这是工作代码:

public static void main(String[] args) { 
        SuperDivide obj = new SuperDivide();
        boolean result = obj.checkSuper(66);
        System.out.println(result);
    }
    public boolean checkSuper(int num) {
        //write your code here
        int n1;
        int n2 = num;
        while (num > 0) {
            n1 = num % 10;
            if (n1 == 0) {
                return false;
            }
            if (n2 % n1 == 0) {
                num = num / 10;
            } else {
                return false;
            }
        }
        return true;
    }

也许你的方法应该看起来像这样:

public boolean checkSuper(int num) {
    int n1;
    int n2 = num;
    while(num > 0) {
        if(num % 10 == 0) {
            return false;
        }
        n1 = num % 10;
        if(n2 % n1 == 0) {
            num = num / 10;
        } else {
            return false;
        }
    }
    return true;
}

我认为这会起作用!

好的,你有一个数字。我们称之为num.显然,我们需要一个remaining 我们初始化 num .由于我们根本不想修改num,让我们保持友善并声明是否final.这可以防止我们意外更改它。

最后一个数字,我们称之为lastDigit可以通过剩余的%10来确定。

现在我们测试if lastDigit == 0 or (num % lastDigit != 0) -> return false

否则,我们更进一步,remaining = remaining/10并再次测试最后一个数字,直到 remaining = 0。因此,我们可以将整个事情包装在一个while(remaining > 0)循环中。

正在做的事情略有不同,因为您修改了原始num变量,这意味着在第二次测试中,您不会将原始数字除以值,而是将修改后的 num 除以值。结果?不知道。可能不是真的正确。