//----------------------------------------------------------------------- static private void fillSums2() { sums2 = new int[smMax + 1]; // ищем сумму, в которой только одно уникальное произведение for (long sm = nMin + nMin; sm <= smMax; ++sm) { if (sums[sm] == 0) { for (long a = nMin; a <= nMax && a <= sm - nMin; ++a) { long b = sm - a; if (b >= a && b <= nMax) { if (mults2.Val(a * b) == 1) { ++sums2[sm]; } } } } } }
//----------------------------------------------------------------------- static private void fillSums() { sums = new int[nMax + nMax + 1]; // Если произведение уникально, то сумма недопустима for (long sm = nMin + nMin; sm <= nMax + nMax; ++sm) { for (long a = nMin; a <= nMax && a <= sm - nMin; ++a) { long b = sm - a; if (b >= a && b <= nMax) { if (mults.Val(a * b) == 1) { ++sums[sm]; } } } if (sums[sm] == 0) { smMax = sm; } } }