isEvenSubset没有返回1

时间:2017-06-06 06:44:54

标签: java

这是问题:如果m的每个偶数因子也是n的因子,则整数被定义为另一个整数n的偶数子集。例如18是12的偶数子集,因为18的偶数因子是2和6,这些都是12的因子。但18不是32的偶数子集,因为6不是32的因子。

这是一个大学的样本问题;显而易见的问题是:没有其他数据结构,包括允许的数组 - 因此,在提供答案时也请考虑这一点。谢谢。

这是我的答案代码:

public class IsEvenSubset {
    public static void main(String[] args) {
        System.out.println(isEvenSubset(18,12));
    }
    private static int isEvenSubset(int m, int n){
        for(int i=2;i<=m;i++){
            int count=0;//reset count in each round
            if(m%2==0 && m%i==0){
                for(int j=2;j<=n;j++){
                    if(n%2==0 && n%j==0){
                        if(i==j)count++;
                    }
                }
                if(count==0)return 0;
            }
        }
        return 1;
    }
}

此代码没有按预期工作。请帮我弄清楚我哪里做错了?

1 个答案:

答案 0 :(得分:1)

您正在检查nprivate static boolean isEvenSubset (int m, int n) { for(int i = 2; i < m; i++){ // note that I don't consider m itself to be a factor of m if (i % 2 == 0 && m % i == 0 && n %i != 0){ // i is an even factor of m but // not a factor of n, so return false return false; } } return true; // all the even factors of m were also factors of n } 是否均匀,而不是他们的因素是否均匀。此外,不需要内循环,只需找到第一个数字的所有偶数因子,并检查它们是否也是第二个数字的因子。

isEvenSubset(18,12)

true返回isEvenSubset(18,32)false返回if not validate(s): #ip validation print("insert you're ip correctly")