有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java IsEventSubset未返回1

问题是:如果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) 个答案

  1. # 1 楼答案

    您正在检查mn是否为偶数,而不是检查它们的因子是否为偶数。此外,不需要内环,只需找到第一个数的所有偶数因子,并检查它们是否也是第二个数的因子

    private 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)返回trueisEvenSubset(18,32)返回false