给定两个这样的整数数组:-
int[] a = { 2, 6, 10, 13, 17,18 };
int[] b = { 3, 7, 8, 9, 11, 15 };
我怎样才能从这两个数组中找到对,这样当它们相乘时变成完美的正方形?
例如,在上面的数组中{2,8}
&{18,8}
是两对。
现在我的方法是蛮力的,我在这两个数组中循环,如下所示:-
int count = 0;
for (int i = 0; i < arr1.Length; i++)
{
for (int j = 0; j < arr2.Length; j++)
{
var x = arr1[i] * arr2[j];
long s = (long)Math.Sqrt(x);
if (x == s * s)
count += 1;
}
}
我怎样才能有效地做到这一点?