我正在尝试自动查找一个数字与另一个数字的最接近因子;
示例:
700到30的最接近因子是28(30不等于700,但28等于700)。
一个显而易见的解决方案就是得到700的所有因子,并做一个简单的距离计算,找到离30最近的因子,但这似乎是低效的。
另一种解决方案是找到所有基本质因数,例如:
private List<Integer> getPrimeFactors(int upTo) {
List<Integer> result = new ArrayList<>();
for (int i = 2; i <= upTo; i++) {
if (upTo % i == 0) {
result.add(i);
}
}
return result;
}
将这些数字相乘得到所有的组合,从而找到最接近的。
我正在尝试对其进行编程,使其自动化。有更好的解决方案吗?
package dummy;
public class test {
public static void main(String[] args) {
int factorOff = 700;
int factorFrom = 30;
for (int i = 2; i < factorOff; i++) {
if (factorOff % (factorFrom + i) == 0) {
System.out.println(factorFrom + i);
i = factorOff;
} else if (factorFrom - i > 1 && factorOff % (factorFrom - i) == 0) {
System.out.println(factorFrom - i);
i = factorOff;
}
}
}
}
你不需要计算所有的因数,但是你可以从数字的两个方向去寻找它最接近的数字,也就是给定数字的因数。
拼多多代码将是:
n= given number(dividend);
x= second number( whose closest number is required)
i=0;
if(n%x==0) print x;
else
while(true){
if(n%(x-i)==0){
print x-i
break
}
else if(n%(x+i)==0){
print x+i;
break
}
else i=i+1
}
我将我的解决方案包装在一个小的静态方法中:
/**
* @param target the number you want the factor to be close to
* @param number the number you want the result to be a factor of
*/
private static int getClosestFactor(int target, int number) {
for (int i = 0; i < number; i++) {
if (number % (target + i) == 0) {
return target + i;
} else if (number % (target - i) == 0) {
return target - i;
}
}
return number;
}
我知道这是一个背包问题,其中权重和值相等,但我认为我在编码逻辑上犯了一个错误,因为即使对于数组中元素的数量(N)为50并且所需的最大总和(M)4500。 为了澄清这个问题,我们得到了一个由N个正整数和一个正整数M组成的数组。数组元素只能使用一次。我们必须找到这个数组的子集(不一定是连续的),使得总和最接近M,但不超过它。 这是我使用动态编程的尝试: 那么在我的代码中是否有任何可能的优化可以帮助我降
问题内容: 问题 : 给定 +ve 和 -ve 整数数组,我们需要在数组中找到总和接近零的一对。 例如: 问题答案: 您可以检查每一对数字并找到最小和。 java代码: 解决方案2: 对数组进行排序。 * 我们将维护两个索引,一个在开头(l=0),一个在结尾(r=n-1) 迭代直到 l < r * 计算 arr[l] + arr[r] 的总和 * 如果 abs (sum) < abs (minSu
问题内容: 我想知道是否有可能找到一个最接近的元素的元素 ,是不是 在那里。 例如,如果我们具有[1,3,6,7]值,并且正在寻找最接近4的元素,则它应返回3,因为3是数组中的最大数字,小于4。 我希望这是有道理的,因为英语不是我的母语。 问题答案: 如果数组已排序,则可以在以下位置进行修改的二进制搜索:
问题内容: 说我有一个清单。我想找到3个最接近的数字,例如6.5。然后返回的值将是。 在python中找到一个最接近的数字并不是那么棘手,可以使用 但是我试图不绕这个循环找到k个最接近的数字。有pythonic方法可以完成上述任务吗? 问题答案: 简短的答案 该 heapq.nsmallest() 函数将整齐,有效地做到这一点: 本质上是这样说的:“给我三个与 6.5 绝对差值最小的输入值”。 算
问题内容: 输入值 :numpy数组; 仅由标量值组成; :numpy数组; 仅由标量值组成; 输出量 :numpy数组; ; 对于in中的每个值,查找in中最接近的值的索引 :numpy数组; ; 对于in中的每个值,查找与in中最接近的值的差 例 示例实现(未完全向量化) 加快此任务的最佳方法是什么?Cython是一个选项,但是,我始终希望能够删除循环并让代码保留为纯NumPy。 更新 我做了
问题内容: 我想在哈希图中搜索键,然后找到与该键最接近的键! 因此,基本上我想搜索一个long,如果地图中不存在该long,则找到与该long值最接近的匹配项!我怎样才能做到这一点!? 提前感谢 问题答案: 如果不迭代其所有键,就无法做到这一点。我假设这不是您想要的,所以这是一种使用的方法: