这是问题:如果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;
}
}
此代码没有按预期工作。请帮我弄清楚我哪里做错了?
答案 0 :(得分:1)
您正在检查n
和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)
true
返回isEvenSubset(18,32)
,false
返回if not validate(s): #ip validation
print("insert you're ip correctly")
。