我是一个初学者,仍在向我们学习C,我不知道如何找到彼此最接近的int因子.
例如,如果输入为数字6,则输出为[2,3].如果输入为24,则输出为[4,6].
有没有办法做到这一点?任何帮助,将不胜感激.
这样做的算法很简单; 将数字的平方根作为整数(您希望截断,而不是舍入).测试该值是否是您输入的因素; 如果是这样,您的输入除以该数字就是您的答案.否则,从先前的值中减去1,然后重试.
在代码中(数组文字是错误的语法,但理论是正确的):
//this code assumes that your input is > 0, will not work otherwise
function int[] getClosestFactors(int input) {
int testNum = (int)sqrt(input);
while (input % testNum != 0) {
testNum--;
}
return {testNum, input / testNum};
}
Run Code Online (Sandbox Code Playgroud)
基本上,您知道在任何一对因子中,最低因子必须小于或等于平方根.因此,如果您从等于或小于输入的平方根的整数开始,并倒计时,您找到的第一个因子将是最近因子对中较小的一个.这将终止所有> 0的整数,因为您最终将达到1,这是所有其他数字的因子.
归档时间: |
|
查看次数: |
1072 次 |
最近记录: |