【发布时间】:2018-12-29 05:34:01
【问题描述】:
我有一个号码。第一次我发现了这个数字的主要因素。假设数字是 12,然后是素数 [2,2,3]。
接下来我必须找出这个数字的另一个因素,例如 12/2=6 ,[2,6] 一个因素。第二个是 12/3=4,[3,4] 另一个因素。
第二个例子,我考虑了另一个数字=30。素数是[2,3,5]。其他因素是[2,15],[3,10],[5,6]。
1 并且数字本身被排除在外。
现在我采用一个数组列表,其中包含给定数字的素数。然后我迭代一个循环并将数字除以素数并得到另一个因子。
说ArrayList abc={2,3,5}
if(abc.size()>=3){
for(int i=0;i<abc.size();i++){
abc1.add(abc.get(i));
abc1.add(number / abc.get(i));
}
}
abc1 是另一个用于附加目的的 ArrayList。现在,当 abc arraylist 包含 3 个或超过 3 个不同的数字(如示例 30)时,此解决方案效果很好。但对于示例 12 中的重复数字(其中素数列表 2 是重复数字),它不能很好地工作。我得到输出 [2,6],[2,6],[3,4]。
为了从列表中找出重复的数字,我写下了这个代码块
for(int k=0;k<abc.size();k++){
for(int j=k+1;j<abc.size();j++){
if(abc.get(k).equals(abc.get(j))){
System.out.println(abc.get(j));
}
}
}
但是我怎么能用这个和以前的代码来消除一个 2。
【问题讨论】:
-
如果数字是 36,质因数是 [2,2,3,3]。在此示例中,您是否希望将 [6,6] 作为“其他”因素之一?我问这个是因为,我认为您上面的第一个代码段不能处理这种情况。
-
No 不处理这种情况。
标签: java for-loop arraylist equals