private int[] 最接近因子1(int Index)
{
int[] Min = new int[2];
int Sqrt_Value = (int)Mathf.Sqrt(Index);
for (int i = Sqrt_Value; i >= 1; i--)
{
if (Index % i == 0)
{
Min[0] = i;
Min[1] = Index / i;
break;
}
}
return Min;
}
private int[] 最接近因子和(int Value)
{
int[] nums = 最接近因子1(Value + 1)[1] - 最接近因子1(Value + 1)[0]
< 最接近因子1(Value + 2)[1] - 最接近因子1(Value + 2)[0]
? 最接近因子1(Value + 1) : 最接近因子1(Value + 2);
return nums;
}
给定一个Value。
题目介绍;
首先,枚举N+1和N+2两种情况,
1.N+1和N+2的因子乘积要与其相等。
2.返回一个绝对值小的情况l
程序运行流程
第一步要找到N+1,或N+2相乘相等的两个因子。然后返回绝对值较小的。
首先找到Index的开根
int Sqrt_Value = (int)Mathf.Sqrt(Index);
我们知道一个N开根内的因子必定对应一个开跟外的因子。两数相乘就能与Index相等。
开根内最大的因子对应的因子两个数的绝对值也是最小的。
所以我们只需找到开根内最大的因子。假设找到就通过这个因子找到对应的因子。然后直接Break即可。
然后在再判断N+1.和N+2返回的因子绝对值那个比较小就返回那个。