Это число раз, когда сито будет работать, чтобы исключить все не простые числа из списка.
result.RemoveAll(i => i > result[index] && i % result[index] == 0);
Каждый раз, когда вы запускаете сито, эта строка кода берет наименьшее число в списке (наименьшее простое число, из которого result
еще не удалили все его множители), а затем удаляет все кратные. Это выполняется 168 раз, и в 168-й раз наименьшее число, из которого список еще не проверен, составляет 997. Это, естественно, 168-е простое число.
Это нужно выполнить только 168 раз, потому что все числа могут быть выражены как произведение списка простых чисел, и не существует числа меньше 1000000, кратного 169-му числу простых чисел (1,009), которое НЕ является кратное простому числу меньше 1009. Наименьшее число, которое можно было бы удалить путем просеивания 1009, которое НЕ было уже удалено, равно 1009 * 1013 = 1,022,117
, или 169-е простые числа, умноженные на 170-е простое число, которое явно больше 100000 и, следовательно, не ' Не нужно проверять этот набор чисел.
Следовательно, все кратные 1009 уже были удалены из списка, когда вы дойдете до этой точки, поэтому нет смысла продолжать, поскольку вы уже удалили все не простые числа из списка. : D