Реализации алгоритмов/Решето Аткина: различия между версиями

Содержимое удалено Содержимое добавлено
Добавлены реализация и пример её использования на Rust
Строка 17:
=Реализации=
В приведённых ниже реализациях предприняты следующие шаги, направленные на оптимизацию вычислений:
* Флаги «простое\составное» хранятся упакованными в массив битов (<code>vector<bool></code> для С++, <code>BitArray</code> для C#, <code>BitSet</code> для Java, <code>BitVec</code> для Rust и т. п.), возвращаемый функцией. Значение ''n''-го бита ''true'' соответствует простому ''n'', ''false'' — составному.
* Умножение на степень двойки производится операцией побитового сдвига (''<<''). Например <code>a << 2</code> вместо <code>4 * a</code>.
* Во избежание переполнения вычисления ведутся в длинном целом типе, в «решето» значения заносятся в обычном целом типе (<code>unsigned long long</code> / <code>unsigned</code> в C++, <code>long</code> / <code>int</code> в C# и Java).
Строка 345:
path = "src/atkin_sieve_test.rs"
</source>
 
=См. также=
[[Реализации алгоритмов/Решето Сундарама|Решето Сундарама]]