//----------------------------------------------------------------------- static private void fillMults() { mults = new CMults(nMax * nMax); // Подсчет количества встреченных произведения для выбора уникальных for (long a = nMin; a <= nMax; ++a) { for (long b = a; b <= nMax; ++b) { mults.Inc(a * b); } } }
//----------------------------------------------------------------------- static private void fillMults2() { mults2 = new CMults((smMax + 1) * (smMax + 1) / 4); // макс произведение при a = b = smMax / 2 // Для допустимых сумм ищем уникальные произведения 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) { mults2.Inc(a * b); } } } } }