Пример: я проверяю некоторые числа от 1 до 1000 в цикле for.
Возможно, число 50 является допустимым числом, поэтому все числа, кратные 50, можно пропустить (100, 150, 200, 250, ...) потому что они также действительны.
Так что мне не нужно проверять эти числа еще раз, чтобы повысить производительность и сократить циклические процессы с 1000 до, может быть, всего 60.
Есть ли способ сделать это?
Поскольку вы запросили механизм «проверки»:
Я хочу проверить «дружные» номера,Это часть «Проектной проблемы Эйлера 21».Я просто хочу улучшить свое решение.
Дружественными числами являются, например, 220 и 284, потому что сумма его собственных делителей обоих чисел равна числу самих себя.
Делители 220: 1, 2,4, 5, 10, 11, 20, 22, 44, 55 и 110 => сумма 284
Делители на 284: 1, 2, 4, 71 и 142 => сумма 220
Так что оба числа являются «дружными» числами.Если я проверяю 220 с 284, мне не нужно снова проверять 284. Я мог бы пропустить его.
List<int> ListOfAmicableNumbers = new List<int>();
for (int i = 1; i <= 1000; i++)
{
if(IsAmicableNumber(i))
{
ListOfAmicableNumbers.Add(i);
}
}
Возможно, существует разумный математический способ пропустить эти значения.Потому что цикл по списку, который становится все больше и больше за каждую итерацию, возможно, 1 миллион итераций, может снова замедлить его.