Update docs with latest information
This commit is contained in:
parent
45bffa358a
commit
b9a37705ff
18 changed files with 254 additions and 140 deletions
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Binary.html' title='core::fmt::Binary'>Binary</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Binary.html' title='core::fmt::Binary'>Binary</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Binary.html' title='core::fmt::Binary'>Binary</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='ramp/ll/limb/struct.Limb.html' title='ramp::ll::limb::Limb'>Limb</a>","impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='ramp/ll/limb_ptr/struct.Limbs.html' title='ramp::ll::limb_ptr::Limbs'>Limbs</a>","impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>","impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='ramp/int/struct.ParseIntError.html' title='ramp::int::ParseIntError'>ParseIntError</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html' title='core::fmt::Debug'>Debug</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html' title='core::fmt::Display'>Display</a> for <a class='struct' href='ramp/ll/limb/struct.Limb.html' title='ramp::ll::limb::Limb'>Limb</a>","impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html' title='core::fmt::Display'>Display</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>","impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html' title='core::fmt::Display'>Display</a> for <a class='struct' href='ramp/int/struct.ParseIntError.html' title='ramp::int::ParseIntError'>ParseIntError</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html' title='core::fmt::Display'>Display</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html' title='core::fmt::Display'>Display</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html' title='core::fmt::LowerHex'>LowerHex</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html' title='core::fmt::LowerHex'>LowerHex</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html' title='core::fmt::LowerHex'>LowerHex</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Octal.html' title='core::fmt::Octal'>Octal</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Octal.html' title='core::fmt::Octal'>Octal</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.Octal.html' title='core::fmt::Octal'>Octal</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
(function() {var implementors = {};
|
||||
implementors['libc'] = [];implementors['ramp'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html' title='core::fmt::UpperHex'>UpperHex</a> for <a class='struct' href='ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>",];implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html' title='core::fmt::UpperHex'>UpperHex</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
implementors['pumpkin'] = ["impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html' title='core::fmt::UpperHex'>UpperHex</a> for <a class='struct' href='pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>",];
|
||||
|
||||
if (window.register_implementors) {
|
||||
window.register_implementors(implementors);
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -56,7 +56,7 @@
|
|||
<code>Prime::from_rng()</code> method.</p>
|
||||
|
||||
<p>Note: the <code>bit_length</code> MUST be at least 512-bits.</p>
|
||||
</div><h4 id='method.from_rng' class='method'><code>fn <a href='#method.from_rng' class='fnname'>from_rng</a>(bit_length: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a>, rngesus: &mut <a class='struct' href='../rand/os/struct.OsRng.html' title='rand::os::OsRng'>OsRng</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h4 id='method.from_rng' class='method'><code>fn <a href='#method.from_rng' class='fnname'>from_rng</a>(bit_length: <a class='primitive' href='https://doc.rust-lang.org/nightly/std/primitive.usize.html'>usize</a>, rngesus: &mut <a class='struct' href='https://doc.rust-lang.org/rand/rand/os/struct.OsRng.html' title='rand::os::OsRng'>OsRng</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<div class='docblock'><p>Constructs a new <code>Prime</code> with the size of <code>bit_length</code> bits, sourced
|
||||
from an already-created <code>OsRng</code>. Not that you can <strong>ONLY</strong> use an
|
||||
<code>OsRng</code>, as it uses the operating system's secure source of entropy.</p>
|
||||
|
@ -68,36 +68,36 @@ from an already-created <code>OsRng</code>. Not that you can <strong>ONLY</stron
|
|||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html' title='core::fmt::UpperHex'>UpperHex</a> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='method.fmt-5' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html#tymethod.fmt' class='fnname'>fmt</a>(&self, fmt: &mut <a class='struct' href='https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html' title='core::fmt::Formatter'>Formatter</a>) -> <a class='type' href='https://doc.rust-lang.org/nightly/core/fmt/type.Result.html' title='core::fmt::Result'>Result</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html' title='core::ops::Add'>Add</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.add' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#tymethod.add' class='fnname'>add</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html' title='core::ops::Add'>Add</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-1' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.add-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#tymethod.add' class='fnname'>add</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html' title='core::ops::Add'>Add</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-1' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.add-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Add.html#tymethod.add' class='fnname'>add</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html' title='core::ops::Sub'>Sub</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-2' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.sub' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#tymethod.sub' class='fnname'>sub</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html' title='core::ops::Sub'>Sub</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-3' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.sub-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#tymethod.sub' class='fnname'>sub</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html' title='core::ops::Sub'>Sub</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-3' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.sub-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Sub.html#tymethod.sub' class='fnname'>sub</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html' title='core::ops::Mul'>Mul</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-4' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.mul' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#tymethod.mul' class='fnname'>mul</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html' title='core::ops::Mul'>Mul</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-5' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.mul-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#tymethod.mul' class='fnname'>mul</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html' title='core::ops::Mul'>Mul</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-5' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.mul-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Mul.html#tymethod.mul' class='fnname'>mul</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html' title='core::ops::Div'>Div</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-6' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.div' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#tymethod.div' class='fnname'>div</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html' title='core::ops::Div'>Div</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-7' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.div-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#tymethod.div' class='fnname'>div</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html' title='core::ops::Div'>Div</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-7' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.div-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Div.html#tymethod.div' class='fnname'>div</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html' title='core::ops::Rem'>Rem</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-8' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.rem' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#tymethod.rem' class='fnname'>rem</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html' title='core::ops::Rem'>Rem</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-9' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.rem-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#tymethod.rem' class='fnname'>rem</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html' title='core::ops::Rem'>Rem</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-9' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.rem-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.Rem.html#tymethod.rem' class='fnname'>rem</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html' title='core::ops::BitAnd'>BitAnd</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-10' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitand' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#tymethod.bitand' class='fnname'>bitand</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html' title='core::ops::BitAnd'>BitAnd</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-11' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitand-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#tymethod.bitand' class='fnname'>bitand</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html' title='core::ops::BitAnd'>BitAnd</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-11' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitand-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitAnd.html#tymethod.bitand' class='fnname'>bitand</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html' title='core::ops::BitOr'>BitOr</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-12' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitor' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#tymethod.bitor' class='fnname'>bitor</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html' title='core::ops::BitOr'>BitOr</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-13' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitor-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#tymethod.bitor' class='fnname'>bitor</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html' title='core::ops::BitOr'>BitOr</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-13' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitor-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitOr.html#tymethod.bitor' class='fnname'>bitor</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html' title='core::ops::BitXor'>BitXor</a><<a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-14' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitxor' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#tymethod.bitxor' class='fnname'>bitxor</a>(self, rhs: Self) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html' title='core::ops::BitXor'>BitXor</a><<a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-15' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitxor-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#tymethod.bitxor' class='fnname'>bitxor</a>(self, rhs: <a class='struct' href='../ramp/int/struct.Int.html' title='ramp::int::Int'>Int</a>) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div><h3 class='impl'><code>impl <a class='trait' href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html' title='core::ops::BitXor'>BitXor</a><Int> for <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h3><div class='impl-items'><h4 id='associatedtype.Output-15' class='type'><code>type <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#associatedtype.Output' class='type'>Output</a> = <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
<h4 id='method.bitxor-1' class='method'><code>fn <a href='https://doc.rust-lang.org/nightly/core/ops/trait.BitXor.html#tymethod.bitxor' class='fnname'>bitxor</a>(self, rhs: Int) -> <a class='struct' href='../pumpkin/struct.Prime.html' title='pumpkin::Prime'>Prime</a></code></h4>
|
||||
</div></section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -121,7 +121,11 @@
|
|||
<span id="77">77</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>feature</span>(<span class='ident'>test</span>)]</span>
|
||||
<span class='comment'>//#![deny(missing_docs)]</span>
|
||||
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>deny</span>(<span class='ident'>missing_docs</span>, <span class='ident'>missing_debug_implementations</span>,
|
||||
<span class='ident'>missing_copy_implementations</span>, <span class='ident'>trivial_casts</span>, <span class='ident'>trivial_numeric_casts</span>,
|
||||
<span class='ident'>unsafe_code</span>, <span class='ident'>unused_import_braces</span>, <span class='ident'>unused_qualifications</span>)]</span>
|
||||
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>"dev"</span>, <span class='ident'>feature</span>(<span class='ident'>plugin</span>))]</span>
|
||||
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>"dev"</span>, <span class='ident'>plugin</span>(<span class='ident'>clippy</span>))]</span>
|
||||
|
||||
<span class='doccomment'>//! A crate for generating large, cryptographically secure prime numbers.</span>
|
||||
<span class='doccomment'>//! `Primes` are seeded from the operating system's main source of entropy,</span>
|
||||
|
@ -147,8 +151,10 @@
|
|||
<span class='doccomment'>//! }</span>
|
||||
<span class='doccomment'>//! ```</span>
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span> <span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>custom_derive</span>;
|
||||
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span> <span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>newtype_derive</span>;
|
||||
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span>
|
||||
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>custom_derive</span>;
|
||||
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span>
|
||||
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>newtype_derive</span>;
|
||||
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>ramp</span>;
|
||||
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>rand</span>;
|
||||
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>test</span>;
|
||||
|
@ -171,28 +177,22 @@
|
|||
<span class='attribute'>#[<span class='ident'>test</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>should_panic</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>test_new_small_prime_from_rng</span>() {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>rngesus</span> <span class='op'>=</span> <span class='kw'>match</span> <span class='ident'>OsRng</span>::<span class='ident'>new</span>() {
|
||||
<span class='prelude-val'>Ok</span>(<span class='ident'>rng</span>) <span class='op'>=></span> <span class='ident'>rng</span>,
|
||||
<span class='prelude-val'>Err</span>(<span class='ident'>reason</span>) <span class='op'>=></span> <span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"An error occurred when initializing the RNG: {}"</span>, <span class='ident'>reason</span>)
|
||||
};
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>rngesus</span> <span class='op'>=</span> <span class='ident'>OsRng</span>::<span class='ident'>new</span>().<span class='ident'>unwrap</span>();
|
||||
|
||||
<span class='ident'>Prime</span>::<span class='ident'>from_rng</span>(<span class='number'>511</span>, <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>rngesus</span>);
|
||||
}
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>bench</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>ignore</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>bench_generate_512_bit_prime</span>(<span class='ident'>b</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>Bencher</span>) {
|
||||
<span class='ident'>b</span>.<span class='ident'>iter</span>(<span class='op'>||</span> <span class='ident'>Prime</span>::<span class='ident'>new</span>(<span class='number'>512</span>));
|
||||
}
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>bench</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>ignore</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>bench_generate_1024_bit_prime</span>(<span class='ident'>b</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>Bencher</span>) {
|
||||
<span class='ident'>b</span>.<span class='ident'>iter</span>(<span class='op'>||</span> <span class='ident'>Prime</span>::<span class='ident'>new</span>(<span class='number'>1024</span>));
|
||||
}
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>bench</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>ignore</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>bench_generate_2048_bit_prime</span>(<span class='ident'>b</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>Bencher</span>) {
|
||||
<span class='ident'>b</span>.<span class='ident'>iter</span>(<span class='op'>||</span> <span class='ident'>Prime</span>::<span class='ident'>new</span>(<span class='number'>2048</span>));
|
||||
}
|
||||
|
|
|
@ -308,72 +308,168 @@
|
|||
<span id="264">264</span>
|
||||
<span id="265">265</span>
|
||||
<span id="266">266</span>
|
||||
<span id="267">267</span>
|
||||
<span id="268">268</span>
|
||||
<span id="269">269</span>
|
||||
<span id="270">270</span>
|
||||
<span id="271">271</span>
|
||||
<span id="272">272</span>
|
||||
<span id="273">273</span>
|
||||
<span id="274">274</span>
|
||||
<span id="275">275</span>
|
||||
<span id="276">276</span>
|
||||
<span id="277">277</span>
|
||||
<span id="278">278</span>
|
||||
<span id="279">279</span>
|
||||
<span id="280">280</span>
|
||||
<span id="281">281</span>
|
||||
<span id="282">282</span>
|
||||
<span id="283">283</span>
|
||||
<span id="284">284</span>
|
||||
<span id="285">285</span>
|
||||
<span id="286">286</span>
|
||||
<span id="287">287</span>
|
||||
<span id="288">288</span>
|
||||
<span id="289">289</span>
|
||||
<span id="290">290</span>
|
||||
<span id="291">291</span>
|
||||
<span id="292">292</span>
|
||||
<span id="293">293</span>
|
||||
<span id="294">294</span>
|
||||
<span id="295">295</span>
|
||||
<span id="296">296</span>
|
||||
<span id="297">297</span>
|
||||
<span id="298">298</span>
|
||||
<span id="299">299</span>
|
||||
<span id="300">300</span>
|
||||
<span id="301">301</span>
|
||||
<span id="302">302</span>
|
||||
<span id="303">303</span>
|
||||
<span id="304">304</span>
|
||||
<span id="305">305</span>
|
||||
<span id="306">306</span>
|
||||
<span id="307">307</span>
|
||||
<span id="308">308</span>
|
||||
<span id="309">309</span>
|
||||
<span id="310">310</span>
|
||||
<span id="311">311</span>
|
||||
<span id="312">312</span>
|
||||
<span id="313">313</span>
|
||||
<span id="314">314</span>
|
||||
<span id="315">315</span>
|
||||
<span id="316">316</span>
|
||||
<span id="317">317</span>
|
||||
<span id="318">318</span>
|
||||
<span id="319">319</span>
|
||||
<span id="320">320</span>
|
||||
<span id="321">321</span>
|
||||
<span id="322">322</span>
|
||||
<span id="323">323</span>
|
||||
<span id="324">324</span>
|
||||
<span id="325">325</span>
|
||||
<span id="326">326</span>
|
||||
</pre><pre class='rust '>
|
||||
<span class='kw'>use</span> <span class='ident'>ramp</span>::{<span class='ident'>Int</span>, <span class='ident'>RandomInt</span>};
|
||||
|
||||
<span class='kw'>use</span> <span class='ident'>rand</span>::{<span class='ident'>OsRng</span>, <span class='ident'>thread_rng</span>};
|
||||
|
||||
<span class='kw'>static</span> <span class='ident'>SMALL_PRIMES</span>: [<span class='ident'>u32</span>; <span class='number'>999</span>] <span class='op'>=</span> [<span class='number'>3</span>, <span class='number'>5</span>, <span class='number'>7</span>, <span class='number'>11</span>, <span class='number'>13</span>, <span class='number'>17</span>, <span class='number'>19</span>, <span class='number'>23</span>, <span class='number'>29</span>, <span class='number'>31</span>, <span class='number'>37</span>, <span class='number'>41</span>, <span class='number'>43</span>, <span class='number'>47</span>, <span class='number'>53</span>, <span class='number'>59</span>, <span class='number'>61</span>,
|
||||
<span class='number'>67</span>, <span class='number'>71</span>, <span class='number'>73</span>, <span class='number'>79</span>, <span class='number'>83</span>, <span class='number'>89</span>, <span class='number'>97</span>, <span class='number'>101</span>, <span class='number'>103</span>, <span class='number'>107</span>, <span class='number'>109</span>, <span class='number'>113</span>, <span class='number'>127</span>, <span class='number'>131</span>, <span class='number'>137</span>, <span class='number'>139</span>, <span class='number'>149</span>, <span class='number'>151</span>, <span class='number'>157</span>, <span class='number'>163</span>, <span class='number'>167</span>,
|
||||
<span class='number'>173</span>, <span class='number'>179</span>, <span class='number'>181</span>, <span class='number'>191</span>, <span class='number'>193</span>, <span class='number'>197</span>, <span class='number'>199</span>, <span class='number'>211</span>, <span class='number'>223</span>, <span class='number'>227</span>, <span class='number'>229</span>, <span class='number'>233</span>, <span class='number'>239</span>, <span class='number'>241</span>, <span class='number'>251</span>, <span class='number'>257</span>, <span class='number'>263</span>, <span class='number'>269</span>, <span class='number'>271</span>, <span class='number'>277</span>,
|
||||
<span class='number'>281</span>, <span class='number'>283</span>, <span class='number'>293</span>, <span class='number'>307</span>, <span class='number'>311</span>, <span class='number'>313</span>, <span class='number'>317</span>, <span class='number'>331</span>, <span class='number'>337</span>, <span class='number'>347</span>, <span class='number'>349</span>, <span class='number'>353</span>, <span class='number'>359</span>, <span class='number'>367</span>, <span class='number'>373</span>, <span class='number'>379</span>, <span class='number'>383</span>, <span class='number'>389</span>, <span class='number'>397</span>, <span class='number'>401</span>,
|
||||
<span class='number'>409</span>, <span class='number'>419</span>, <span class='number'>421</span>, <span class='number'>431</span>, <span class='number'>433</span>, <span class='number'>439</span>, <span class='number'>443</span>, <span class='number'>449</span>, <span class='number'>457</span>, <span class='number'>461</span>, <span class='number'>463</span>, <span class='number'>467</span>, <span class='number'>479</span>, <span class='number'>487</span>, <span class='number'>491</span>, <span class='number'>499</span>, <span class='number'>503</span>, <span class='number'>509</span>, <span class='number'>521</span>, <span class='number'>523</span>,
|
||||
<span class='number'>541</span>, <span class='number'>547</span>, <span class='number'>557</span>, <span class='number'>563</span>, <span class='number'>569</span>, <span class='number'>571</span>, <span class='number'>577</span>, <span class='number'>587</span>, <span class='number'>593</span>, <span class='number'>599</span>, <span class='number'>601</span>, <span class='number'>607</span>, <span class='number'>613</span>, <span class='number'>617</span>, <span class='number'>619</span>, <span class='number'>631</span>, <span class='number'>641</span>, <span class='number'>643</span>, <span class='number'>647</span>, <span class='number'>653</span>,
|
||||
<span class='number'>659</span>, <span class='number'>661</span>, <span class='number'>673</span>, <span class='number'>677</span>, <span class='number'>683</span>, <span class='number'>691</span>, <span class='number'>701</span>, <span class='number'>709</span>, <span class='number'>719</span>, <span class='number'>727</span>, <span class='number'>733</span>, <span class='number'>739</span>, <span class='number'>743</span>, <span class='number'>751</span>, <span class='number'>757</span>, <span class='number'>761</span>, <span class='number'>769</span>, <span class='number'>773</span>, <span class='number'>787</span>, <span class='number'>797</span>,
|
||||
<span class='number'>809</span>, <span class='number'>811</span>, <span class='number'>821</span>, <span class='number'>823</span>, <span class='number'>827</span>, <span class='number'>829</span>, <span class='number'>839</span>, <span class='number'>853</span>, <span class='number'>857</span>, <span class='number'>859</span>, <span class='number'>863</span>, <span class='number'>877</span>, <span class='number'>881</span>, <span class='number'>883</span>, <span class='number'>887</span>, <span class='number'>907</span>, <span class='number'>911</span>, <span class='number'>919</span>, <span class='number'>929</span>, <span class='number'>937</span>,
|
||||
<span class='number'>941</span>, <span class='number'>947</span>, <span class='number'>953</span>, <span class='number'>967</span>, <span class='number'>971</span>, <span class='number'>977</span>, <span class='number'>983</span>, <span class='number'>991</span>, <span class='number'>997</span>, <span class='number'>1009</span>, <span class='number'>1013</span>, <span class='number'>1019</span>, <span class='number'>1021</span>, <span class='number'>1031</span>, <span class='number'>1033</span>, <span class='number'>1039</span>, <span class='number'>1049</span>, <span class='number'>1051</span>,
|
||||
<span class='number'>1061</span>, <span class='number'>1063</span>, <span class='number'>1069</span>, <span class='number'>1087</span>, <span class='number'>1091</span>, <span class='number'>1093</span>, <span class='number'>1097</span>, <span class='number'>1103</span>, <span class='number'>1109</span>, <span class='number'>1117</span>, <span class='number'>1123</span>, <span class='number'>1129</span>, <span class='number'>1151</span>, <span class='number'>1153</span>, <span class='number'>1163</span>, <span class='number'>1171</span>,
|
||||
<span class='number'>1181</span>, <span class='number'>1187</span>, <span class='number'>1193</span>, <span class='number'>1201</span>, <span class='number'>1213</span>, <span class='number'>1217</span>, <span class='number'>1223</span>, <span class='number'>1229</span>, <span class='number'>1231</span>, <span class='number'>1237</span>, <span class='number'>1249</span>, <span class='number'>1259</span>, <span class='number'>1277</span>, <span class='number'>1279</span>, <span class='number'>1283</span>, <span class='number'>1289</span>,
|
||||
<span class='number'>1291</span>, <span class='number'>1297</span>, <span class='number'>1301</span>, <span class='number'>1303</span>, <span class='number'>1307</span>, <span class='number'>1319</span>, <span class='number'>1321</span>, <span class='number'>1327</span>, <span class='number'>1361</span>, <span class='number'>1367</span>, <span class='number'>1373</span>, <span class='number'>1381</span>, <span class='number'>1399</span>, <span class='number'>1409</span>, <span class='number'>1423</span>, <span class='number'>1427</span>,
|
||||
<span class='number'>1429</span>, <span class='number'>1433</span>, <span class='number'>1439</span>, <span class='number'>1447</span>, <span class='number'>1451</span>, <span class='number'>1453</span>, <span class='number'>1459</span>, <span class='number'>1471</span>, <span class='number'>1481</span>, <span class='number'>1483</span>, <span class='number'>1487</span>, <span class='number'>1489</span>, <span class='number'>1493</span>, <span class='number'>1499</span>, <span class='number'>1511</span>, <span class='number'>1523</span>,
|
||||
<span class='number'>1531</span>, <span class='number'>1543</span>, <span class='number'>1549</span>, <span class='number'>1553</span>, <span class='number'>1559</span>, <span class='number'>1567</span>, <span class='number'>1571</span>, <span class='number'>1579</span>, <span class='number'>1583</span>, <span class='number'>1597</span>, <span class='number'>1601</span>, <span class='number'>1607</span>, <span class='number'>1609</span>, <span class='number'>1613</span>, <span class='number'>1619</span>, <span class='number'>1621</span>,
|
||||
<span class='number'>1627</span>, <span class='number'>1637</span>, <span class='number'>1657</span>, <span class='number'>1663</span>, <span class='number'>1667</span>, <span class='number'>1669</span>, <span class='number'>1693</span>, <span class='number'>1697</span>, <span class='number'>1699</span>, <span class='number'>1709</span>, <span class='number'>1721</span>, <span class='number'>1723</span>, <span class='number'>1733</span>, <span class='number'>1741</span>, <span class='number'>1747</span>, <span class='number'>1753</span>,
|
||||
<span class='number'>1759</span>, <span class='number'>1777</span>, <span class='number'>1783</span>, <span class='number'>1787</span>, <span class='number'>1789</span>, <span class='number'>1801</span>, <span class='number'>1811</span>, <span class='number'>1823</span>, <span class='number'>1831</span>, <span class='number'>1847</span>, <span class='number'>1861</span>, <span class='number'>1867</span>, <span class='number'>1871</span>, <span class='number'>1873</span>, <span class='number'>1877</span>, <span class='number'>1879</span>,
|
||||
<span class='number'>1889</span>, <span class='number'>1901</span>, <span class='number'>1907</span>, <span class='number'>1913</span>, <span class='number'>1931</span>, <span class='number'>1933</span>, <span class='number'>1949</span>, <span class='number'>1951</span>, <span class='number'>1973</span>, <span class='number'>1979</span>, <span class='number'>1987</span>, <span class='number'>1993</span>, <span class='number'>1997</span>, <span class='number'>1999</span>, <span class='number'>2003</span>, <span class='number'>2011</span>,
|
||||
<span class='number'>2017</span>, <span class='number'>2027</span>, <span class='number'>2029</span>, <span class='number'>2039</span>, <span class='number'>2053</span>, <span class='number'>2063</span>, <span class='number'>2069</span>, <span class='number'>2081</span>, <span class='number'>2083</span>, <span class='number'>2087</span>, <span class='number'>2089</span>, <span class='number'>2099</span>, <span class='number'>2111</span>, <span class='number'>2113</span>, <span class='number'>2129</span>, <span class='number'>2131</span>,
|
||||
<span class='number'>2137</span>, <span class='number'>2141</span>, <span class='number'>2143</span>, <span class='number'>2153</span>, <span class='number'>2161</span>, <span class='number'>2179</span>, <span class='number'>2203</span>, <span class='number'>2207</span>, <span class='number'>2213</span>, <span class='number'>2221</span>, <span class='number'>2237</span>, <span class='number'>2239</span>, <span class='number'>2243</span>, <span class='number'>2251</span>, <span class='number'>2267</span>, <span class='number'>2269</span>,
|
||||
<span class='number'>2273</span>, <span class='number'>2281</span>, <span class='number'>2287</span>, <span class='number'>2293</span>, <span class='number'>2297</span>, <span class='number'>2309</span>, <span class='number'>2311</span>, <span class='number'>2333</span>, <span class='number'>2339</span>, <span class='number'>2341</span>, <span class='number'>2347</span>, <span class='number'>2351</span>, <span class='number'>2357</span>, <span class='number'>2371</span>, <span class='number'>2377</span>, <span class='number'>2381</span>,
|
||||
<span class='number'>2383</span>, <span class='number'>2389</span>, <span class='number'>2393</span>, <span class='number'>2399</span>, <span class='number'>2411</span>, <span class='number'>2417</span>, <span class='number'>2423</span>, <span class='number'>2437</span>, <span class='number'>2441</span>, <span class='number'>2447</span>, <span class='number'>2459</span>, <span class='number'>2467</span>, <span class='number'>2473</span>, <span class='number'>2477</span>, <span class='number'>2503</span>, <span class='number'>2521</span>,
|
||||
<span class='number'>2531</span>, <span class='number'>2539</span>, <span class='number'>2543</span>, <span class='number'>2549</span>, <span class='number'>2551</span>, <span class='number'>2557</span>, <span class='number'>2579</span>, <span class='number'>2591</span>, <span class='number'>2593</span>, <span class='number'>2609</span>, <span class='number'>2617</span>, <span class='number'>2621</span>, <span class='number'>2633</span>, <span class='number'>2647</span>, <span class='number'>2657</span>, <span class='number'>2659</span>,
|
||||
<span class='number'>2663</span>, <span class='number'>2671</span>, <span class='number'>2677</span>, <span class='number'>2683</span>, <span class='number'>2687</span>, <span class='number'>2689</span>, <span class='number'>2693</span>, <span class='number'>2699</span>, <span class='number'>2707</span>, <span class='number'>2711</span>, <span class='number'>2713</span>, <span class='number'>2719</span>, <span class='number'>2729</span>, <span class='number'>2731</span>, <span class='number'>2741</span>, <span class='number'>2749</span>,
|
||||
<span class='number'>2753</span>, <span class='number'>2767</span>, <span class='number'>2777</span>, <span class='number'>2789</span>, <span class='number'>2791</span>, <span class='number'>2797</span>, <span class='number'>2801</span>, <span class='number'>2803</span>, <span class='number'>2819</span>, <span class='number'>2833</span>, <span class='number'>2837</span>, <span class='number'>2843</span>, <span class='number'>2851</span>, <span class='number'>2857</span>, <span class='number'>2861</span>, <span class='number'>2879</span>,
|
||||
<span class='number'>2887</span>, <span class='number'>2897</span>, <span class='number'>2903</span>, <span class='number'>2909</span>, <span class='number'>2917</span>, <span class='number'>2927</span>, <span class='number'>2939</span>, <span class='number'>2953</span>, <span class='number'>2957</span>, <span class='number'>2963</span>, <span class='number'>2969</span>, <span class='number'>2971</span>, <span class='number'>2999</span>, <span class='number'>3001</span>, <span class='number'>3011</span>, <span class='number'>3019</span>,
|
||||
<span class='number'>3023</span>, <span class='number'>3037</span>, <span class='number'>3041</span>, <span class='number'>3049</span>, <span class='number'>3061</span>, <span class='number'>3067</span>, <span class='number'>3079</span>, <span class='number'>3083</span>, <span class='number'>3089</span>, <span class='number'>3109</span>, <span class='number'>3119</span>, <span class='number'>3121</span>, <span class='number'>3137</span>, <span class='number'>3163</span>, <span class='number'>3167</span>, <span class='number'>3169</span>,
|
||||
<span class='number'>3181</span>, <span class='number'>3187</span>, <span class='number'>3191</span>, <span class='number'>3203</span>, <span class='number'>3209</span>, <span class='number'>3217</span>, <span class='number'>3221</span>, <span class='number'>3229</span>, <span class='number'>3251</span>, <span class='number'>3253</span>, <span class='number'>3257</span>, <span class='number'>3259</span>, <span class='number'>3271</span>, <span class='number'>3299</span>, <span class='number'>3301</span>, <span class='number'>3307</span>,
|
||||
<span class='number'>3313</span>, <span class='number'>3319</span>, <span class='number'>3323</span>, <span class='number'>3329</span>, <span class='number'>3331</span>, <span class='number'>3343</span>, <span class='number'>3347</span>, <span class='number'>3359</span>, <span class='number'>3361</span>, <span class='number'>3371</span>, <span class='number'>3373</span>, <span class='number'>3389</span>, <span class='number'>3391</span>, <span class='number'>3407</span>, <span class='number'>3413</span>, <span class='number'>3433</span>,
|
||||
<span class='number'>3449</span>, <span class='number'>3457</span>, <span class='number'>3461</span>, <span class='number'>3463</span>, <span class='number'>3467</span>, <span class='number'>3469</span>, <span class='number'>3491</span>, <span class='number'>3499</span>, <span class='number'>3511</span>, <span class='number'>3517</span>, <span class='number'>3527</span>, <span class='number'>3529</span>, <span class='number'>3533</span>, <span class='number'>3539</span>, <span class='number'>3541</span>, <span class='number'>3547</span>,
|
||||
<span class='number'>3557</span>, <span class='number'>3559</span>, <span class='number'>3571</span>, <span class='number'>3581</span>, <span class='number'>3583</span>, <span class='number'>3593</span>, <span class='number'>3607</span>, <span class='number'>3613</span>, <span class='number'>3617</span>, <span class='number'>3623</span>, <span class='number'>3631</span>, <span class='number'>3637</span>, <span class='number'>3643</span>, <span class='number'>3659</span>, <span class='number'>3671</span>, <span class='number'>3673</span>,
|
||||
<span class='number'>3677</span>, <span class='number'>3691</span>, <span class='number'>3697</span>, <span class='number'>3701</span>, <span class='number'>3709</span>, <span class='number'>3719</span>, <span class='number'>3727</span>, <span class='number'>3733</span>, <span class='number'>3739</span>, <span class='number'>3761</span>, <span class='number'>3767</span>, <span class='number'>3769</span>, <span class='number'>3779</span>, <span class='number'>3793</span>, <span class='number'>3797</span>, <span class='number'>3803</span>,
|
||||
<span class='number'>3821</span>, <span class='number'>3823</span>, <span class='number'>3833</span>, <span class='number'>3847</span>, <span class='number'>3851</span>, <span class='number'>3853</span>, <span class='number'>3863</span>, <span class='number'>3877</span>, <span class='number'>3881</span>, <span class='number'>3889</span>, <span class='number'>3907</span>, <span class='number'>3911</span>, <span class='number'>3917</span>, <span class='number'>3919</span>, <span class='number'>3923</span>, <span class='number'>3929</span>,
|
||||
<span class='number'>3931</span>, <span class='number'>3943</span>, <span class='number'>3947</span>, <span class='number'>3967</span>, <span class='number'>3989</span>, <span class='number'>4001</span>, <span class='number'>4003</span>, <span class='number'>4007</span>, <span class='number'>4013</span>, <span class='number'>4019</span>, <span class='number'>4021</span>, <span class='number'>4027</span>, <span class='number'>4049</span>, <span class='number'>4051</span>, <span class='number'>4057</span>, <span class='number'>4073</span>,
|
||||
<span class='number'>4079</span>, <span class='number'>4091</span>, <span class='number'>4093</span>, <span class='number'>4099</span>, <span class='number'>4111</span>, <span class='number'>4127</span>, <span class='number'>4129</span>, <span class='number'>4133</span>, <span class='number'>4139</span>, <span class='number'>4153</span>, <span class='number'>4157</span>, <span class='number'>4159</span>, <span class='number'>4177</span>, <span class='number'>4201</span>, <span class='number'>4211</span>, <span class='number'>4217</span>,
|
||||
<span class='number'>4219</span>, <span class='number'>4229</span>, <span class='number'>4231</span>, <span class='number'>4241</span>, <span class='number'>4243</span>, <span class='number'>4253</span>, <span class='number'>4259</span>, <span class='number'>4261</span>, <span class='number'>4271</span>, <span class='number'>4273</span>, <span class='number'>4283</span>, <span class='number'>4289</span>, <span class='number'>4297</span>, <span class='number'>4327</span>, <span class='number'>4337</span>, <span class='number'>4339</span>,
|
||||
<span class='number'>4349</span>, <span class='number'>4357</span>, <span class='number'>4363</span>, <span class='number'>4373</span>, <span class='number'>4391</span>, <span class='number'>4397</span>, <span class='number'>4409</span>, <span class='number'>4421</span>, <span class='number'>4423</span>, <span class='number'>4441</span>, <span class='number'>4447</span>, <span class='number'>4451</span>, <span class='number'>4457</span>, <span class='number'>4463</span>, <span class='number'>4481</span>, <span class='number'>4483</span>,
|
||||
<span class='number'>4493</span>, <span class='number'>4507</span>, <span class='number'>4513</span>, <span class='number'>4517</span>, <span class='number'>4519</span>, <span class='number'>4523</span>, <span class='number'>4547</span>, <span class='number'>4549</span>, <span class='number'>4561</span>, <span class='number'>4567</span>, <span class='number'>4583</span>, <span class='number'>4591</span>, <span class='number'>4597</span>, <span class='number'>4603</span>, <span class='number'>4621</span>, <span class='number'>4637</span>,
|
||||
<span class='number'>4639</span>, <span class='number'>4643</span>, <span class='number'>4649</span>, <span class='number'>4651</span>, <span class='number'>4657</span>, <span class='number'>4663</span>, <span class='number'>4673</span>, <span class='number'>4679</span>, <span class='number'>4691</span>, <span class='number'>4703</span>, <span class='number'>4721</span>, <span class='number'>4723</span>, <span class='number'>4729</span>, <span class='number'>4733</span>, <span class='number'>4751</span>, <span class='number'>4759</span>,
|
||||
<span class='number'>4783</span>, <span class='number'>4787</span>, <span class='number'>4789</span>, <span class='number'>4793</span>, <span class='number'>4799</span>, <span class='number'>4801</span>, <span class='number'>4813</span>, <span class='number'>4817</span>, <span class='number'>4831</span>, <span class='number'>4861</span>, <span class='number'>4871</span>, <span class='number'>4877</span>, <span class='number'>4889</span>, <span class='number'>4903</span>, <span class='number'>4909</span>, <span class='number'>4919</span>,
|
||||
<span class='number'>4931</span>, <span class='number'>4933</span>, <span class='number'>4937</span>, <span class='number'>4943</span>, <span class='number'>4951</span>, <span class='number'>4957</span>, <span class='number'>4967</span>, <span class='number'>4969</span>, <span class='number'>4973</span>, <span class='number'>4987</span>, <span class='number'>4993</span>, <span class='number'>4999</span>, <span class='number'>5003</span>, <span class='number'>5009</span>, <span class='number'>5011</span>, <span class='number'>5021</span>,
|
||||
<span class='number'>5023</span>, <span class='number'>5039</span>, <span class='number'>5051</span>, <span class='number'>5059</span>, <span class='number'>5077</span>, <span class='number'>5081</span>, <span class='number'>5087</span>, <span class='number'>5099</span>, <span class='number'>5101</span>, <span class='number'>5107</span>, <span class='number'>5113</span>, <span class='number'>5119</span>, <span class='number'>5147</span>, <span class='number'>5153</span>, <span class='number'>5167</span>, <span class='number'>5171</span>,
|
||||
<span class='number'>5179</span>, <span class='number'>5189</span>, <span class='number'>5197</span>, <span class='number'>5209</span>, <span class='number'>5227</span>, <span class='number'>5231</span>, <span class='number'>5233</span>, <span class='number'>5237</span>, <span class='number'>5261</span>, <span class='number'>5273</span>, <span class='number'>5279</span>, <span class='number'>5281</span>, <span class='number'>5297</span>, <span class='number'>5303</span>, <span class='number'>5309</span>, <span class='number'>5323</span>,
|
||||
<span class='number'>5333</span>, <span class='number'>5347</span>, <span class='number'>5351</span>, <span class='number'>5381</span>, <span class='number'>5387</span>, <span class='number'>5393</span>, <span class='number'>5399</span>, <span class='number'>5407</span>, <span class='number'>5413</span>, <span class='number'>5417</span>, <span class='number'>5419</span>, <span class='number'>5431</span>, <span class='number'>5437</span>, <span class='number'>5441</span>, <span class='number'>5443</span>, <span class='number'>5449</span>,
|
||||
<span class='number'>5471</span>, <span class='number'>5477</span>, <span class='number'>5479</span>, <span class='number'>5483</span>, <span class='number'>5501</span>, <span class='number'>5503</span>, <span class='number'>5507</span>, <span class='number'>5519</span>, <span class='number'>5521</span>, <span class='number'>5527</span>, <span class='number'>5531</span>, <span class='number'>5557</span>, <span class='number'>5563</span>, <span class='number'>5569</span>, <span class='number'>5573</span>, <span class='number'>5581</span>,
|
||||
<span class='number'>5591</span>, <span class='number'>5623</span>, <span class='number'>5639</span>, <span class='number'>5641</span>, <span class='number'>5647</span>, <span class='number'>5651</span>, <span class='number'>5653</span>, <span class='number'>5657</span>, <span class='number'>5659</span>, <span class='number'>5669</span>, <span class='number'>5683</span>, <span class='number'>5689</span>, <span class='number'>5693</span>, <span class='number'>5701</span>, <span class='number'>5711</span>, <span class='number'>5717</span>,
|
||||
<span class='number'>5737</span>, <span class='number'>5741</span>, <span class='number'>5743</span>, <span class='number'>5749</span>, <span class='number'>5779</span>, <span class='number'>5783</span>, <span class='number'>5791</span>, <span class='number'>5801</span>, <span class='number'>5807</span>, <span class='number'>5813</span>, <span class='number'>5821</span>, <span class='number'>5827</span>, <span class='number'>5839</span>, <span class='number'>5843</span>, <span class='number'>5849</span>, <span class='number'>5851</span>,
|
||||
<span class='number'>5857</span>, <span class='number'>5861</span>, <span class='number'>5867</span>, <span class='number'>5869</span>, <span class='number'>5879</span>, <span class='number'>5881</span>, <span class='number'>5897</span>, <span class='number'>5903</span>, <span class='number'>5923</span>, <span class='number'>5927</span>, <span class='number'>5939</span>, <span class='number'>5953</span>, <span class='number'>5981</span>, <span class='number'>5987</span>, <span class='number'>6007</span>, <span class='number'>6011</span>,
|
||||
<span class='number'>6029</span>, <span class='number'>6037</span>, <span class='number'>6043</span>, <span class='number'>6047</span>, <span class='number'>6053</span>, <span class='number'>6067</span>, <span class='number'>6073</span>, <span class='number'>6079</span>, <span class='number'>6089</span>, <span class='number'>6091</span>, <span class='number'>6101</span>, <span class='number'>6113</span>, <span class='number'>6121</span>, <span class='number'>6131</span>, <span class='number'>6133</span>, <span class='number'>6143</span>,
|
||||
<span class='number'>6151</span>, <span class='number'>6163</span>, <span class='number'>6173</span>, <span class='number'>6197</span>, <span class='number'>6199</span>, <span class='number'>6203</span>, <span class='number'>6211</span>, <span class='number'>6217</span>, <span class='number'>6221</span>, <span class='number'>6229</span>, <span class='number'>6247</span>, <span class='number'>6257</span>, <span class='number'>6263</span>, <span class='number'>6269</span>, <span class='number'>6271</span>, <span class='number'>6277</span>,
|
||||
<span class='number'>6287</span>, <span class='number'>6299</span>, <span class='number'>6301</span>, <span class='number'>6311</span>, <span class='number'>6317</span>, <span class='number'>6323</span>, <span class='number'>6329</span>, <span class='number'>6337</span>, <span class='number'>6343</span>, <span class='number'>6353</span>, <span class='number'>6359</span>, <span class='number'>6361</span>, <span class='number'>6367</span>, <span class='number'>6373</span>, <span class='number'>6379</span>, <span class='number'>6389</span>,
|
||||
<span class='number'>6397</span>, <span class='number'>6421</span>, <span class='number'>6427</span>, <span class='number'>6449</span>, <span class='number'>6451</span>, <span class='number'>6469</span>, <span class='number'>6473</span>, <span class='number'>6481</span>, <span class='number'>6491</span>, <span class='number'>6521</span>, <span class='number'>6529</span>, <span class='number'>6547</span>, <span class='number'>6551</span>, <span class='number'>6553</span>, <span class='number'>6563</span>, <span class='number'>6569</span>,
|
||||
<span class='number'>6571</span>, <span class='number'>6577</span>, <span class='number'>6581</span>, <span class='number'>6599</span>, <span class='number'>6607</span>, <span class='number'>6619</span>, <span class='number'>6637</span>, <span class='number'>6653</span>, <span class='number'>6659</span>, <span class='number'>6661</span>, <span class='number'>6673</span>, <span class='number'>6679</span>, <span class='number'>6689</span>, <span class='number'>6691</span>, <span class='number'>6701</span>, <span class='number'>6703</span>,
|
||||
<span class='number'>6709</span>, <span class='number'>6719</span>, <span class='number'>6733</span>, <span class='number'>6737</span>, <span class='number'>6761</span>, <span class='number'>6763</span>, <span class='number'>6779</span>, <span class='number'>6781</span>, <span class='number'>6791</span>, <span class='number'>6793</span>, <span class='number'>6803</span>, <span class='number'>6823</span>, <span class='number'>6827</span>, <span class='number'>6829</span>, <span class='number'>6833</span>, <span class='number'>6841</span>,
|
||||
<span class='number'>6857</span>, <span class='number'>6863</span>, <span class='number'>6869</span>, <span class='number'>6871</span>, <span class='number'>6883</span>, <span class='number'>6899</span>, <span class='number'>6907</span>, <span class='number'>6911</span>, <span class='number'>6917</span>, <span class='number'>6947</span>, <span class='number'>6949</span>, <span class='number'>6959</span>, <span class='number'>6961</span>, <span class='number'>6967</span>, <span class='number'>6971</span>, <span class='number'>6977</span>,
|
||||
<span class='number'>6983</span>, <span class='number'>6991</span>, <span class='number'>6997</span>, <span class='number'>7001</span>, <span class='number'>7013</span>, <span class='number'>7019</span>, <span class='number'>7027</span>, <span class='number'>7039</span>, <span class='number'>7043</span>, <span class='number'>7057</span>, <span class='number'>7069</span>, <span class='number'>7079</span>, <span class='number'>7103</span>, <span class='number'>7109</span>, <span class='number'>7121</span>, <span class='number'>7127</span>,
|
||||
<span class='number'>7129</span>, <span class='number'>7151</span>, <span class='number'>7159</span>, <span class='number'>7177</span>, <span class='number'>7187</span>, <span class='number'>7193</span>, <span class='number'>7207</span>, <span class='number'>7211</span>, <span class='number'>7213</span>, <span class='number'>7219</span>, <span class='number'>7229</span>, <span class='number'>7237</span>, <span class='number'>7243</span>, <span class='number'>7247</span>, <span class='number'>7253</span>, <span class='number'>7283</span>,
|
||||
<span class='number'>7297</span>, <span class='number'>7307</span>, <span class='number'>7309</span>, <span class='number'>7321</span>, <span class='number'>7331</span>, <span class='number'>7333</span>, <span class='number'>7349</span>, <span class='number'>7351</span>, <span class='number'>7369</span>, <span class='number'>7393</span>, <span class='number'>7411</span>, <span class='number'>7417</span>, <span class='number'>7433</span>, <span class='number'>7451</span>, <span class='number'>7457</span>, <span class='number'>7459</span>,
|
||||
<span class='number'>7477</span>, <span class='number'>7481</span>, <span class='number'>7487</span>, <span class='number'>7489</span>, <span class='number'>7499</span>, <span class='number'>7507</span>, <span class='number'>7517</span>, <span class='number'>7523</span>, <span class='number'>7529</span>, <span class='number'>7537</span>, <span class='number'>7541</span>, <span class='number'>7547</span>, <span class='number'>7549</span>, <span class='number'>7559</span>, <span class='number'>7561</span>, <span class='number'>7573</span>,
|
||||
<span class='number'>7577</span>, <span class='number'>7583</span>, <span class='number'>7589</span>, <span class='number'>7591</span>, <span class='number'>7603</span>, <span class='number'>7607</span>, <span class='number'>7621</span>, <span class='number'>7639</span>, <span class='number'>7643</span>, <span class='number'>7649</span>, <span class='number'>7669</span>, <span class='number'>7673</span>, <span class='number'>7681</span>, <span class='number'>7687</span>, <span class='number'>7691</span>, <span class='number'>7699</span>,
|
||||
<span class='number'>7703</span>, <span class='number'>7717</span>, <span class='number'>7723</span>, <span class='number'>7727</span>, <span class='number'>7741</span>, <span class='number'>7753</span>, <span class='number'>7757</span>, <span class='number'>7759</span>, <span class='number'>7789</span>, <span class='number'>7793</span>, <span class='number'>7817</span>, <span class='number'>7823</span>, <span class='number'>7829</span>, <span class='number'>7841</span>, <span class='number'>7853</span>, <span class='number'>7867</span>,
|
||||
<span class='number'>7873</span>, <span class='number'>7877</span>, <span class='number'>7879</span>, <span class='number'>7883</span>, <span class='number'>7901</span>, <span class='number'>7907</span>, <span class='number'>7919</span>];
|
||||
<span class='kw'>static</span> <span class='ident'>SMALL_PRIMES</span>: [<span class='ident'>u32</span>; <span class='number'>999</span>] <span class='op'>=</span> [<span class='number'>3</span>, <span class='number'>5</span>, <span class='number'>7</span>, <span class='number'>11</span>, <span class='number'>13</span>, <span class='number'>17</span>, <span class='number'>19</span>, <span class='number'>23</span>, <span class='number'>29</span>, <span class='number'>31</span>, <span class='number'>37</span>, <span class='number'>41</span>, <span class='number'>43</span>, <span class='number'>47</span>, <span class='number'>53</span>, <span class='number'>59</span>,
|
||||
<span class='number'>61</span>, <span class='number'>67</span>, <span class='number'>71</span>, <span class='number'>73</span>, <span class='number'>79</span>, <span class='number'>83</span>, <span class='number'>89</span>, <span class='number'>97</span>, <span class='number'>101</span>, <span class='number'>103</span>, <span class='number'>107</span>, <span class='number'>109</span>, <span class='number'>113</span>, <span class='number'>127</span>,
|
||||
<span class='number'>131</span>, <span class='number'>137</span>, <span class='number'>139</span>, <span class='number'>149</span>, <span class='number'>151</span>, <span class='number'>157</span>, <span class='number'>163</span>, <span class='number'>167</span>, <span class='number'>173</span>, <span class='number'>179</span>, <span class='number'>181</span>, <span class='number'>191</span>,
|
||||
<span class='number'>193</span>, <span class='number'>197</span>, <span class='number'>199</span>, <span class='number'>211</span>, <span class='number'>223</span>, <span class='number'>227</span>, <span class='number'>229</span>, <span class='number'>233</span>, <span class='number'>239</span>, <span class='number'>241</span>, <span class='number'>251</span>, <span class='number'>257</span>,
|
||||
<span class='number'>263</span>, <span class='number'>269</span>, <span class='number'>271</span>, <span class='number'>277</span>, <span class='number'>281</span>, <span class='number'>283</span>, <span class='number'>293</span>, <span class='number'>307</span>, <span class='number'>311</span>, <span class='number'>313</span>, <span class='number'>317</span>, <span class='number'>331</span>,
|
||||
<span class='number'>337</span>, <span class='number'>347</span>, <span class='number'>349</span>, <span class='number'>353</span>, <span class='number'>359</span>, <span class='number'>367</span>, <span class='number'>373</span>, <span class='number'>379</span>, <span class='number'>383</span>, <span class='number'>389</span>, <span class='number'>397</span>, <span class='number'>401</span>,
|
||||
<span class='number'>409</span>, <span class='number'>419</span>, <span class='number'>421</span>, <span class='number'>431</span>, <span class='number'>433</span>, <span class='number'>439</span>, <span class='number'>443</span>, <span class='number'>449</span>, <span class='number'>457</span>, <span class='number'>461</span>, <span class='number'>463</span>, <span class='number'>467</span>,
|
||||
<span class='number'>479</span>, <span class='number'>487</span>, <span class='number'>491</span>, <span class='number'>499</span>, <span class='number'>503</span>, <span class='number'>509</span>, <span class='number'>521</span>, <span class='number'>523</span>, <span class='number'>541</span>, <span class='number'>547</span>, <span class='number'>557</span>, <span class='number'>563</span>,
|
||||
<span class='number'>569</span>, <span class='number'>571</span>, <span class='number'>577</span>, <span class='number'>587</span>, <span class='number'>593</span>, <span class='number'>599</span>, <span class='number'>601</span>, <span class='number'>607</span>, <span class='number'>613</span>, <span class='number'>617</span>, <span class='number'>619</span>, <span class='number'>631</span>,
|
||||
<span class='number'>641</span>, <span class='number'>643</span>, <span class='number'>647</span>, <span class='number'>653</span>, <span class='number'>659</span>, <span class='number'>661</span>, <span class='number'>673</span>, <span class='number'>677</span>, <span class='number'>683</span>, <span class='number'>691</span>, <span class='number'>701</span>, <span class='number'>709</span>,
|
||||
<span class='number'>719</span>, <span class='number'>727</span>, <span class='number'>733</span>, <span class='number'>739</span>, <span class='number'>743</span>, <span class='number'>751</span>, <span class='number'>757</span>, <span class='number'>761</span>, <span class='number'>769</span>, <span class='number'>773</span>, <span class='number'>787</span>, <span class='number'>797</span>,
|
||||
<span class='number'>809</span>, <span class='number'>811</span>, <span class='number'>821</span>, <span class='number'>823</span>, <span class='number'>827</span>, <span class='number'>829</span>, <span class='number'>839</span>, <span class='number'>853</span>, <span class='number'>857</span>, <span class='number'>859</span>, <span class='number'>863</span>, <span class='number'>877</span>,
|
||||
<span class='number'>881</span>, <span class='number'>883</span>, <span class='number'>887</span>, <span class='number'>907</span>, <span class='number'>911</span>, <span class='number'>919</span>, <span class='number'>929</span>, <span class='number'>937</span>, <span class='number'>941</span>, <span class='number'>947</span>, <span class='number'>953</span>, <span class='number'>967</span>,
|
||||
<span class='number'>971</span>, <span class='number'>977</span>, <span class='number'>983</span>, <span class='number'>991</span>, <span class='number'>997</span>, <span class='number'>1009</span>, <span class='number'>1013</span>, <span class='number'>1019</span>, <span class='number'>1021</span>, <span class='number'>1031</span>, <span class='number'>1033</span>,
|
||||
<span class='number'>1039</span>, <span class='number'>1049</span>, <span class='number'>1051</span>, <span class='number'>1061</span>, <span class='number'>1063</span>, <span class='number'>1069</span>, <span class='number'>1087</span>, <span class='number'>1091</span>, <span class='number'>1093</span>, <span class='number'>1097</span>,
|
||||
<span class='number'>1103</span>, <span class='number'>1109</span>, <span class='number'>1117</span>, <span class='number'>1123</span>, <span class='number'>1129</span>, <span class='number'>1151</span>, <span class='number'>1153</span>, <span class='number'>1163</span>, <span class='number'>1171</span>, <span class='number'>1181</span>,
|
||||
<span class='number'>1187</span>, <span class='number'>1193</span>, <span class='number'>1201</span>, <span class='number'>1213</span>, <span class='number'>1217</span>, <span class='number'>1223</span>, <span class='number'>1229</span>, <span class='number'>1231</span>, <span class='number'>1237</span>, <span class='number'>1249</span>,
|
||||
<span class='number'>1259</span>, <span class='number'>1277</span>, <span class='number'>1279</span>, <span class='number'>1283</span>, <span class='number'>1289</span>, <span class='number'>1291</span>, <span class='number'>1297</span>, <span class='number'>1301</span>, <span class='number'>1303</span>, <span class='number'>1307</span>,
|
||||
<span class='number'>1319</span>, <span class='number'>1321</span>, <span class='number'>1327</span>, <span class='number'>1361</span>, <span class='number'>1367</span>, <span class='number'>1373</span>, <span class='number'>1381</span>, <span class='number'>1399</span>, <span class='number'>1409</span>, <span class='number'>1423</span>,
|
||||
<span class='number'>1427</span>, <span class='number'>1429</span>, <span class='number'>1433</span>, <span class='number'>1439</span>, <span class='number'>1447</span>, <span class='number'>1451</span>, <span class='number'>1453</span>, <span class='number'>1459</span>, <span class='number'>1471</span>, <span class='number'>1481</span>,
|
||||
<span class='number'>1483</span>, <span class='number'>1487</span>, <span class='number'>1489</span>, <span class='number'>1493</span>, <span class='number'>1499</span>, <span class='number'>1511</span>, <span class='number'>1523</span>, <span class='number'>1531</span>, <span class='number'>1543</span>, <span class='number'>1549</span>,
|
||||
<span class='number'>1553</span>, <span class='number'>1559</span>, <span class='number'>1567</span>, <span class='number'>1571</span>, <span class='number'>1579</span>, <span class='number'>1583</span>, <span class='number'>1597</span>, <span class='number'>1601</span>, <span class='number'>1607</span>, <span class='number'>1609</span>,
|
||||
<span class='number'>1613</span>, <span class='number'>1619</span>, <span class='number'>1621</span>, <span class='number'>1627</span>, <span class='number'>1637</span>, <span class='number'>1657</span>, <span class='number'>1663</span>, <span class='number'>1667</span>, <span class='number'>1669</span>, <span class='number'>1693</span>,
|
||||
<span class='number'>1697</span>, <span class='number'>1699</span>, <span class='number'>1709</span>, <span class='number'>1721</span>, <span class='number'>1723</span>, <span class='number'>1733</span>, <span class='number'>1741</span>, <span class='number'>1747</span>, <span class='number'>1753</span>, <span class='number'>1759</span>,
|
||||
<span class='number'>1777</span>, <span class='number'>1783</span>, <span class='number'>1787</span>, <span class='number'>1789</span>, <span class='number'>1801</span>, <span class='number'>1811</span>, <span class='number'>1823</span>, <span class='number'>1831</span>, <span class='number'>1847</span>, <span class='number'>1861</span>,
|
||||
<span class='number'>1867</span>, <span class='number'>1871</span>, <span class='number'>1873</span>, <span class='number'>1877</span>, <span class='number'>1879</span>, <span class='number'>1889</span>, <span class='number'>1901</span>, <span class='number'>1907</span>, <span class='number'>1913</span>, <span class='number'>1931</span>,
|
||||
<span class='number'>1933</span>, <span class='number'>1949</span>, <span class='number'>1951</span>, <span class='number'>1973</span>, <span class='number'>1979</span>, <span class='number'>1987</span>, <span class='number'>1993</span>, <span class='number'>1997</span>, <span class='number'>1999</span>, <span class='number'>2003</span>,
|
||||
<span class='number'>2011</span>, <span class='number'>2017</span>, <span class='number'>2027</span>, <span class='number'>2029</span>, <span class='number'>2039</span>, <span class='number'>2053</span>, <span class='number'>2063</span>, <span class='number'>2069</span>, <span class='number'>2081</span>, <span class='number'>2083</span>,
|
||||
<span class='number'>2087</span>, <span class='number'>2089</span>, <span class='number'>2099</span>, <span class='number'>2111</span>, <span class='number'>2113</span>, <span class='number'>2129</span>, <span class='number'>2131</span>, <span class='number'>2137</span>, <span class='number'>2141</span>, <span class='number'>2143</span>,
|
||||
<span class='number'>2153</span>, <span class='number'>2161</span>, <span class='number'>2179</span>, <span class='number'>2203</span>, <span class='number'>2207</span>, <span class='number'>2213</span>, <span class='number'>2221</span>, <span class='number'>2237</span>, <span class='number'>2239</span>, <span class='number'>2243</span>,
|
||||
<span class='number'>2251</span>, <span class='number'>2267</span>, <span class='number'>2269</span>, <span class='number'>2273</span>, <span class='number'>2281</span>, <span class='number'>2287</span>, <span class='number'>2293</span>, <span class='number'>2297</span>, <span class='number'>2309</span>, <span class='number'>2311</span>,
|
||||
<span class='number'>2333</span>, <span class='number'>2339</span>, <span class='number'>2341</span>, <span class='number'>2347</span>, <span class='number'>2351</span>, <span class='number'>2357</span>, <span class='number'>2371</span>, <span class='number'>2377</span>, <span class='number'>2381</span>, <span class='number'>2383</span>,
|
||||
<span class='number'>2389</span>, <span class='number'>2393</span>, <span class='number'>2399</span>, <span class='number'>2411</span>, <span class='number'>2417</span>, <span class='number'>2423</span>, <span class='number'>2437</span>, <span class='number'>2441</span>, <span class='number'>2447</span>, <span class='number'>2459</span>,
|
||||
<span class='number'>2467</span>, <span class='number'>2473</span>, <span class='number'>2477</span>, <span class='number'>2503</span>, <span class='number'>2521</span>, <span class='number'>2531</span>, <span class='number'>2539</span>, <span class='number'>2543</span>, <span class='number'>2549</span>, <span class='number'>2551</span>,
|
||||
<span class='number'>2557</span>, <span class='number'>2579</span>, <span class='number'>2591</span>, <span class='number'>2593</span>, <span class='number'>2609</span>, <span class='number'>2617</span>, <span class='number'>2621</span>, <span class='number'>2633</span>, <span class='number'>2647</span>, <span class='number'>2657</span>,
|
||||
<span class='number'>2659</span>, <span class='number'>2663</span>, <span class='number'>2671</span>, <span class='number'>2677</span>, <span class='number'>2683</span>, <span class='number'>2687</span>, <span class='number'>2689</span>, <span class='number'>2693</span>, <span class='number'>2699</span>, <span class='number'>2707</span>,
|
||||
<span class='number'>2711</span>, <span class='number'>2713</span>, <span class='number'>2719</span>, <span class='number'>2729</span>, <span class='number'>2731</span>, <span class='number'>2741</span>, <span class='number'>2749</span>, <span class='number'>2753</span>, <span class='number'>2767</span>, <span class='number'>2777</span>,
|
||||
<span class='number'>2789</span>, <span class='number'>2791</span>, <span class='number'>2797</span>, <span class='number'>2801</span>, <span class='number'>2803</span>, <span class='number'>2819</span>, <span class='number'>2833</span>, <span class='number'>2837</span>, <span class='number'>2843</span>, <span class='number'>2851</span>,
|
||||
<span class='number'>2857</span>, <span class='number'>2861</span>, <span class='number'>2879</span>, <span class='number'>2887</span>, <span class='number'>2897</span>, <span class='number'>2903</span>, <span class='number'>2909</span>, <span class='number'>2917</span>, <span class='number'>2927</span>, <span class='number'>2939</span>,
|
||||
<span class='number'>2953</span>, <span class='number'>2957</span>, <span class='number'>2963</span>, <span class='number'>2969</span>, <span class='number'>2971</span>, <span class='number'>2999</span>, <span class='number'>3001</span>, <span class='number'>3011</span>, <span class='number'>3019</span>, <span class='number'>3023</span>,
|
||||
<span class='number'>3037</span>, <span class='number'>3041</span>, <span class='number'>3049</span>, <span class='number'>3061</span>, <span class='number'>3067</span>, <span class='number'>3079</span>, <span class='number'>3083</span>, <span class='number'>3089</span>, <span class='number'>3109</span>, <span class='number'>3119</span>,
|
||||
<span class='number'>3121</span>, <span class='number'>3137</span>, <span class='number'>3163</span>, <span class='number'>3167</span>, <span class='number'>3169</span>, <span class='number'>3181</span>, <span class='number'>3187</span>, <span class='number'>3191</span>, <span class='number'>3203</span>, <span class='number'>3209</span>,
|
||||
<span class='number'>3217</span>, <span class='number'>3221</span>, <span class='number'>3229</span>, <span class='number'>3251</span>, <span class='number'>3253</span>, <span class='number'>3257</span>, <span class='number'>3259</span>, <span class='number'>3271</span>, <span class='number'>3299</span>, <span class='number'>3301</span>,
|
||||
<span class='number'>3307</span>, <span class='number'>3313</span>, <span class='number'>3319</span>, <span class='number'>3323</span>, <span class='number'>3329</span>, <span class='number'>3331</span>, <span class='number'>3343</span>, <span class='number'>3347</span>, <span class='number'>3359</span>, <span class='number'>3361</span>,
|
||||
<span class='number'>3371</span>, <span class='number'>3373</span>, <span class='number'>3389</span>, <span class='number'>3391</span>, <span class='number'>3407</span>, <span class='number'>3413</span>, <span class='number'>3433</span>, <span class='number'>3449</span>, <span class='number'>3457</span>, <span class='number'>3461</span>,
|
||||
<span class='number'>3463</span>, <span class='number'>3467</span>, <span class='number'>3469</span>, <span class='number'>3491</span>, <span class='number'>3499</span>, <span class='number'>3511</span>, <span class='number'>3517</span>, <span class='number'>3527</span>, <span class='number'>3529</span>, <span class='number'>3533</span>,
|
||||
<span class='number'>3539</span>, <span class='number'>3541</span>, <span class='number'>3547</span>, <span class='number'>3557</span>, <span class='number'>3559</span>, <span class='number'>3571</span>, <span class='number'>3581</span>, <span class='number'>3583</span>, <span class='number'>3593</span>, <span class='number'>3607</span>,
|
||||
<span class='number'>3613</span>, <span class='number'>3617</span>, <span class='number'>3623</span>, <span class='number'>3631</span>, <span class='number'>3637</span>, <span class='number'>3643</span>, <span class='number'>3659</span>, <span class='number'>3671</span>, <span class='number'>3673</span>, <span class='number'>3677</span>,
|
||||
<span class='number'>3691</span>, <span class='number'>3697</span>, <span class='number'>3701</span>, <span class='number'>3709</span>, <span class='number'>3719</span>, <span class='number'>3727</span>, <span class='number'>3733</span>, <span class='number'>3739</span>, <span class='number'>3761</span>, <span class='number'>3767</span>,
|
||||
<span class='number'>3769</span>, <span class='number'>3779</span>, <span class='number'>3793</span>, <span class='number'>3797</span>, <span class='number'>3803</span>, <span class='number'>3821</span>, <span class='number'>3823</span>, <span class='number'>3833</span>, <span class='number'>3847</span>, <span class='number'>3851</span>,
|
||||
<span class='number'>3853</span>, <span class='number'>3863</span>, <span class='number'>3877</span>, <span class='number'>3881</span>, <span class='number'>3889</span>, <span class='number'>3907</span>, <span class='number'>3911</span>, <span class='number'>3917</span>, <span class='number'>3919</span>, <span class='number'>3923</span>,
|
||||
<span class='number'>3929</span>, <span class='number'>3931</span>, <span class='number'>3943</span>, <span class='number'>3947</span>, <span class='number'>3967</span>, <span class='number'>3989</span>, <span class='number'>4001</span>, <span class='number'>4003</span>, <span class='number'>4007</span>, <span class='number'>4013</span>,
|
||||
<span class='number'>4019</span>, <span class='number'>4021</span>, <span class='number'>4027</span>, <span class='number'>4049</span>, <span class='number'>4051</span>, <span class='number'>4057</span>, <span class='number'>4073</span>, <span class='number'>4079</span>, <span class='number'>4091</span>, <span class='number'>4093</span>,
|
||||
<span class='number'>4099</span>, <span class='number'>4111</span>, <span class='number'>4127</span>, <span class='number'>4129</span>, <span class='number'>4133</span>, <span class='number'>4139</span>, <span class='number'>4153</span>, <span class='number'>4157</span>, <span class='number'>4159</span>, <span class='number'>4177</span>,
|
||||
<span class='number'>4201</span>, <span class='number'>4211</span>, <span class='number'>4217</span>, <span class='number'>4219</span>, <span class='number'>4229</span>, <span class='number'>4231</span>, <span class='number'>4241</span>, <span class='number'>4243</span>, <span class='number'>4253</span>, <span class='number'>4259</span>,
|
||||
<span class='number'>4261</span>, <span class='number'>4271</span>, <span class='number'>4273</span>, <span class='number'>4283</span>, <span class='number'>4289</span>, <span class='number'>4297</span>, <span class='number'>4327</span>, <span class='number'>4337</span>, <span class='number'>4339</span>, <span class='number'>4349</span>,
|
||||
<span class='number'>4357</span>, <span class='number'>4363</span>, <span class='number'>4373</span>, <span class='number'>4391</span>, <span class='number'>4397</span>, <span class='number'>4409</span>, <span class='number'>4421</span>, <span class='number'>4423</span>, <span class='number'>4441</span>, <span class='number'>4447</span>,
|
||||
<span class='number'>4451</span>, <span class='number'>4457</span>, <span class='number'>4463</span>, <span class='number'>4481</span>, <span class='number'>4483</span>, <span class='number'>4493</span>, <span class='number'>4507</span>, <span class='number'>4513</span>, <span class='number'>4517</span>, <span class='number'>4519</span>,
|
||||
<span class='number'>4523</span>, <span class='number'>4547</span>, <span class='number'>4549</span>, <span class='number'>4561</span>, <span class='number'>4567</span>, <span class='number'>4583</span>, <span class='number'>4591</span>, <span class='number'>4597</span>, <span class='number'>4603</span>, <span class='number'>4621</span>,
|
||||
<span class='number'>4637</span>, <span class='number'>4639</span>, <span class='number'>4643</span>, <span class='number'>4649</span>, <span class='number'>4651</span>, <span class='number'>4657</span>, <span class='number'>4663</span>, <span class='number'>4673</span>, <span class='number'>4679</span>, <span class='number'>4691</span>,
|
||||
<span class='number'>4703</span>, <span class='number'>4721</span>, <span class='number'>4723</span>, <span class='number'>4729</span>, <span class='number'>4733</span>, <span class='number'>4751</span>, <span class='number'>4759</span>, <span class='number'>4783</span>, <span class='number'>4787</span>, <span class='number'>4789</span>,
|
||||
<span class='number'>4793</span>, <span class='number'>4799</span>, <span class='number'>4801</span>, <span class='number'>4813</span>, <span class='number'>4817</span>, <span class='number'>4831</span>, <span class='number'>4861</span>, <span class='number'>4871</span>, <span class='number'>4877</span>, <span class='number'>4889</span>,
|
||||
<span class='number'>4903</span>, <span class='number'>4909</span>, <span class='number'>4919</span>, <span class='number'>4931</span>, <span class='number'>4933</span>, <span class='number'>4937</span>, <span class='number'>4943</span>, <span class='number'>4951</span>, <span class='number'>4957</span>, <span class='number'>4967</span>,
|
||||
<span class='number'>4969</span>, <span class='number'>4973</span>, <span class='number'>4987</span>, <span class='number'>4993</span>, <span class='number'>4999</span>, <span class='number'>5003</span>, <span class='number'>5009</span>, <span class='number'>5011</span>, <span class='number'>5021</span>, <span class='number'>5023</span>,
|
||||
<span class='number'>5039</span>, <span class='number'>5051</span>, <span class='number'>5059</span>, <span class='number'>5077</span>, <span class='number'>5081</span>, <span class='number'>5087</span>, <span class='number'>5099</span>, <span class='number'>5101</span>, <span class='number'>5107</span>, <span class='number'>5113</span>,
|
||||
<span class='number'>5119</span>, <span class='number'>5147</span>, <span class='number'>5153</span>, <span class='number'>5167</span>, <span class='number'>5171</span>, <span class='number'>5179</span>, <span class='number'>5189</span>, <span class='number'>5197</span>, <span class='number'>5209</span>, <span class='number'>5227</span>,
|
||||
<span class='number'>5231</span>, <span class='number'>5233</span>, <span class='number'>5237</span>, <span class='number'>5261</span>, <span class='number'>5273</span>, <span class='number'>5279</span>, <span class='number'>5281</span>, <span class='number'>5297</span>, <span class='number'>5303</span>, <span class='number'>5309</span>,
|
||||
<span class='number'>5323</span>, <span class='number'>5333</span>, <span class='number'>5347</span>, <span class='number'>5351</span>, <span class='number'>5381</span>, <span class='number'>5387</span>, <span class='number'>5393</span>, <span class='number'>5399</span>, <span class='number'>5407</span>, <span class='number'>5413</span>,
|
||||
<span class='number'>5417</span>, <span class='number'>5419</span>, <span class='number'>5431</span>, <span class='number'>5437</span>, <span class='number'>5441</span>, <span class='number'>5443</span>, <span class='number'>5449</span>, <span class='number'>5471</span>, <span class='number'>5477</span>, <span class='number'>5479</span>,
|
||||
<span class='number'>5483</span>, <span class='number'>5501</span>, <span class='number'>5503</span>, <span class='number'>5507</span>, <span class='number'>5519</span>, <span class='number'>5521</span>, <span class='number'>5527</span>, <span class='number'>5531</span>, <span class='number'>5557</span>, <span class='number'>5563</span>,
|
||||
<span class='number'>5569</span>, <span class='number'>5573</span>, <span class='number'>5581</span>, <span class='number'>5591</span>, <span class='number'>5623</span>, <span class='number'>5639</span>, <span class='number'>5641</span>, <span class='number'>5647</span>, <span class='number'>5651</span>, <span class='number'>5653</span>,
|
||||
<span class='number'>5657</span>, <span class='number'>5659</span>, <span class='number'>5669</span>, <span class='number'>5683</span>, <span class='number'>5689</span>, <span class='number'>5693</span>, <span class='number'>5701</span>, <span class='number'>5711</span>, <span class='number'>5717</span>, <span class='number'>5737</span>,
|
||||
<span class='number'>5741</span>, <span class='number'>5743</span>, <span class='number'>5749</span>, <span class='number'>5779</span>, <span class='number'>5783</span>, <span class='number'>5791</span>, <span class='number'>5801</span>, <span class='number'>5807</span>, <span class='number'>5813</span>, <span class='number'>5821</span>,
|
||||
<span class='number'>5827</span>, <span class='number'>5839</span>, <span class='number'>5843</span>, <span class='number'>5849</span>, <span class='number'>5851</span>, <span class='number'>5857</span>, <span class='number'>5861</span>, <span class='number'>5867</span>, <span class='number'>5869</span>, <span class='number'>5879</span>,
|
||||
<span class='number'>5881</span>, <span class='number'>5897</span>, <span class='number'>5903</span>, <span class='number'>5923</span>, <span class='number'>5927</span>, <span class='number'>5939</span>, <span class='number'>5953</span>, <span class='number'>5981</span>, <span class='number'>5987</span>, <span class='number'>6007</span>,
|
||||
<span class='number'>6011</span>, <span class='number'>6029</span>, <span class='number'>6037</span>, <span class='number'>6043</span>, <span class='number'>6047</span>, <span class='number'>6053</span>, <span class='number'>6067</span>, <span class='number'>6073</span>, <span class='number'>6079</span>, <span class='number'>6089</span>,
|
||||
<span class='number'>6091</span>, <span class='number'>6101</span>, <span class='number'>6113</span>, <span class='number'>6121</span>, <span class='number'>6131</span>, <span class='number'>6133</span>, <span class='number'>6143</span>, <span class='number'>6151</span>, <span class='number'>6163</span>, <span class='number'>6173</span>,
|
||||
<span class='number'>6197</span>, <span class='number'>6199</span>, <span class='number'>6203</span>, <span class='number'>6211</span>, <span class='number'>6217</span>, <span class='number'>6221</span>, <span class='number'>6229</span>, <span class='number'>6247</span>, <span class='number'>6257</span>, <span class='number'>6263</span>,
|
||||
<span class='number'>6269</span>, <span class='number'>6271</span>, <span class='number'>6277</span>, <span class='number'>6287</span>, <span class='number'>6299</span>, <span class='number'>6301</span>, <span class='number'>6311</span>, <span class='number'>6317</span>, <span class='number'>6323</span>, <span class='number'>6329</span>,
|
||||
<span class='number'>6337</span>, <span class='number'>6343</span>, <span class='number'>6353</span>, <span class='number'>6359</span>, <span class='number'>6361</span>, <span class='number'>6367</span>, <span class='number'>6373</span>, <span class='number'>6379</span>, <span class='number'>6389</span>, <span class='number'>6397</span>,
|
||||
<span class='number'>6421</span>, <span class='number'>6427</span>, <span class='number'>6449</span>, <span class='number'>6451</span>, <span class='number'>6469</span>, <span class='number'>6473</span>, <span class='number'>6481</span>, <span class='number'>6491</span>, <span class='number'>6521</span>, <span class='number'>6529</span>,
|
||||
<span class='number'>6547</span>, <span class='number'>6551</span>, <span class='number'>6553</span>, <span class='number'>6563</span>, <span class='number'>6569</span>, <span class='number'>6571</span>, <span class='number'>6577</span>, <span class='number'>6581</span>, <span class='number'>6599</span>, <span class='number'>6607</span>,
|
||||
<span class='number'>6619</span>, <span class='number'>6637</span>, <span class='number'>6653</span>, <span class='number'>6659</span>, <span class='number'>6661</span>, <span class='number'>6673</span>, <span class='number'>6679</span>, <span class='number'>6689</span>, <span class='number'>6691</span>, <span class='number'>6701</span>,
|
||||
<span class='number'>6703</span>, <span class='number'>6709</span>, <span class='number'>6719</span>, <span class='number'>6733</span>, <span class='number'>6737</span>, <span class='number'>6761</span>, <span class='number'>6763</span>, <span class='number'>6779</span>, <span class='number'>6781</span>, <span class='number'>6791</span>,
|
||||
<span class='number'>6793</span>, <span class='number'>6803</span>, <span class='number'>6823</span>, <span class='number'>6827</span>, <span class='number'>6829</span>, <span class='number'>6833</span>, <span class='number'>6841</span>, <span class='number'>6857</span>, <span class='number'>6863</span>, <span class='number'>6869</span>,
|
||||
<span class='number'>6871</span>, <span class='number'>6883</span>, <span class='number'>6899</span>, <span class='number'>6907</span>, <span class='number'>6911</span>, <span class='number'>6917</span>, <span class='number'>6947</span>, <span class='number'>6949</span>, <span class='number'>6959</span>, <span class='number'>6961</span>,
|
||||
<span class='number'>6967</span>, <span class='number'>6971</span>, <span class='number'>6977</span>, <span class='number'>6983</span>, <span class='number'>6991</span>, <span class='number'>6997</span>, <span class='number'>7001</span>, <span class='number'>7013</span>, <span class='number'>7019</span>, <span class='number'>7027</span>,
|
||||
<span class='number'>7039</span>, <span class='number'>7043</span>, <span class='number'>7057</span>, <span class='number'>7069</span>, <span class='number'>7079</span>, <span class='number'>7103</span>, <span class='number'>7109</span>, <span class='number'>7121</span>, <span class='number'>7127</span>, <span class='number'>7129</span>,
|
||||
<span class='number'>7151</span>, <span class='number'>7159</span>, <span class='number'>7177</span>, <span class='number'>7187</span>, <span class='number'>7193</span>, <span class='number'>7207</span>, <span class='number'>7211</span>, <span class='number'>7213</span>, <span class='number'>7219</span>, <span class='number'>7229</span>,
|
||||
<span class='number'>7237</span>, <span class='number'>7243</span>, <span class='number'>7247</span>, <span class='number'>7253</span>, <span class='number'>7283</span>, <span class='number'>7297</span>, <span class='number'>7307</span>, <span class='number'>7309</span>, <span class='number'>7321</span>, <span class='number'>7331</span>,
|
||||
<span class='number'>7333</span>, <span class='number'>7349</span>, <span class='number'>7351</span>, <span class='number'>7369</span>, <span class='number'>7393</span>, <span class='number'>7411</span>, <span class='number'>7417</span>, <span class='number'>7433</span>, <span class='number'>7451</span>, <span class='number'>7457</span>,
|
||||
<span class='number'>7459</span>, <span class='number'>7477</span>, <span class='number'>7481</span>, <span class='number'>7487</span>, <span class='number'>7489</span>, <span class='number'>7499</span>, <span class='number'>7507</span>, <span class='number'>7517</span>, <span class='number'>7523</span>, <span class='number'>7529</span>,
|
||||
<span class='number'>7537</span>, <span class='number'>7541</span>, <span class='number'>7547</span>, <span class='number'>7549</span>, <span class='number'>7559</span>, <span class='number'>7561</span>, <span class='number'>7573</span>, <span class='number'>7577</span>, <span class='number'>7583</span>, <span class='number'>7589</span>,
|
||||
<span class='number'>7591</span>, <span class='number'>7603</span>, <span class='number'>7607</span>, <span class='number'>7621</span>, <span class='number'>7639</span>, <span class='number'>7643</span>, <span class='number'>7649</span>, <span class='number'>7669</span>, <span class='number'>7673</span>, <span class='number'>7681</span>,
|
||||
<span class='number'>7687</span>, <span class='number'>7691</span>, <span class='number'>7699</span>, <span class='number'>7703</span>, <span class='number'>7717</span>, <span class='number'>7723</span>, <span class='number'>7727</span>, <span class='number'>7741</span>, <span class='number'>7753</span>, <span class='number'>7757</span>,
|
||||
<span class='number'>7759</span>, <span class='number'>7789</span>, <span class='number'>7793</span>, <span class='number'>7817</span>, <span class='number'>7823</span>, <span class='number'>7829</span>, <span class='number'>7841</span>, <span class='number'>7853</span>, <span class='number'>7867</span>, <span class='number'>7873</span>,
|
||||
<span class='number'>7877</span>, <span class='number'>7879</span>, <span class='number'>7883</span>, <span class='number'>7901</span>, <span class='number'>7907</span>, <span class='number'>7919</span>];
|
||||
|
||||
<span class='doccomment'>/// An arbitrarily-length prime number, suitable for cryptographic purposes.</span>
|
||||
<span class='doccomment'>///</span>
|
||||
|
@ -412,7 +508,7 @@
|
|||
<span class='ident'>NewtypeBitAnd</span>(<span class='ident'>Int</span>), <span class='ident'>NewtypeBitOr</span>, <span class='ident'>NewtypeBitOr</span>(<span class='ident'>Int</span>), <span class='ident'>NewtypeBitXor</span>,
|
||||
<span class='ident'>NewtypeBitXor</span>(<span class='ident'>Int</span>)
|
||||
)]</span>
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Prime</span>(<span class='ident'>Int</span>);
|
||||
<span class='kw'>pub</span> <span class='kw'>struct</span> <span class='ident'>Prime</span>(<span class='ident'>Int</span>);
|
||||
}
|
||||
|
||||
<span class='kw'>impl</span> <span class='ident'>Prime</span> {
|
||||
|
@ -426,9 +522,9 @@
|
|||
<span class='macro'>debug_assert</span><span class='macro'>!</span>(<span class='ident'>bit_length</span> <span class='op'>>=</span> <span class='number'>512</span>);
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>rngesus</span> <span class='op'>=</span> <span class='kw'>match</span> <span class='ident'>OsRng</span>::<span class='ident'>new</span>() {
|
||||
<span class='prelude-val'>Ok</span>(<span class='ident'>rng</span>) <span class='op'>=></span> <span class='ident'>rng</span>,
|
||||
<span class='prelude-val'>Err</span>(<span class='ident'>reason</span>) <span class='op'>=></span> <span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Error initializing RNG: {}"</span>, <span class='ident'>reason</span>)
|
||||
<span class='prelude-val'>Err</span>(<span class='ident'>reason</span>) <span class='op'>=></span> <span class='macro'>panic</span><span class='macro'>!</span>(<span class='string'>"Error initializing RNG: {}"</span>, <span class='ident'>reason</span>),
|
||||
};
|
||||
|
||||
|
||||
<span class='ident'>Prime</span>::<span class='ident'>from_rng</span>(<span class='ident'>bit_length</span>, <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>rngesus</span>)
|
||||
}
|
||||
|
||||
|
@ -438,7 +534,7 @@
|
|||
<span class='kw'>pub</span> <span class='kw'>fn</span> <span class='ident'>from_rng</span>(<span class='ident'>bit_length</span>: <span class='ident'>usize</span>, <span class='ident'>rngesus</span>: <span class='kw-2'>&</span><span class='kw-2'>mut</span> <span class='ident'>OsRng</span>) <span class='op'>-></span> <span class='ident'>Prime</span> {
|
||||
<span class='macro'>debug_assert</span><span class='macro'>!</span>(<span class='ident'>bit_length</span> <span class='op'>>=</span> <span class='number'>512</span>);
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>candidate</span>: <span class='ident'>Int</span>;
|
||||
|
||||
|
||||
<span class='comment'>// In order to remove as much bias from the system as possible, test</span>
|
||||
<span class='comment'>// 500 potential candidates at a time before re-seeding the candidate</span>
|
||||
<span class='comment'>// with a new random number.</span>
|
||||
|
@ -478,6 +574,35 @@
|
|||
}
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>mod_exp</span>(<span class='ident'>base</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>, <span class='ident'>exponent</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>, <span class='ident'>modulus</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> <span class='ident'>Int</span> {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>result</span> <span class='op'>=</span> <span class='ident'>Int</span>::<span class='ident'>one</span>();
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>base</span> <span class='op'>=</span> <span class='ident'>base</span>.<span class='ident'>clone</span>();
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>exponent</span> <span class='op'>=</span> <span class='ident'>exponent</span>.<span class='ident'>clone</span>();
|
||||
|
||||
<span class='kw'>while</span> <span class='ident'>exponent</span> <span class='op'>></span> <span class='number'>0_usize</span> {
|
||||
<span class='kw'>if</span> <span class='kw-2'>&</span><span class='ident'>exponent</span> <span class='kw-2'>&</span> <span class='number'>1_usize</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='ident'>result</span> <span class='op'>=</span> (<span class='kw-2'>&</span><span class='ident'>base</span> <span class='op'>*</span> <span class='ident'>result</span>) <span class='op'>%</span> <span class='ident'>modulus</span>;
|
||||
}
|
||||
|
||||
<span class='ident'>base</span> <span class='op'>=</span> (<span class='kw-2'>&</span><span class='ident'>base</span>.<span class='ident'>pow</span>(<span class='number'>2</span>)) <span class='op'>%</span> <span class='ident'>modulus</span>;
|
||||
<span class='ident'>exponent</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>exponent</span> <span class='op'>>></span> <span class='number'>1</span>;
|
||||
}
|
||||
|
||||
<span class='ident'>result</span>
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>rewrite</span>(<span class='ident'>candidate</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> (<span class='ident'>Int</span>, <span class='ident'>Int</span>) {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>d</span> <span class='op'>=</span> <span class='ident'>candidate</span> <span class='op'>-</span> <span class='number'>1_usize</span>;
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>s</span> <span class='op'>=</span> <span class='ident'>Int</span>::<span class='ident'>zero</span>();
|
||||
|
||||
<span class='kw'>while</span> <span class='kw-2'>&</span><span class='ident'>d</span> <span class='kw-2'>&</span> <span class='number'>1</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='ident'>d</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>d</span> <span class='op'>>></span> <span class='number'>1_usize</span>;
|
||||
<span class='ident'>s</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>s</span> <span class='op'>+</span> <span class='number'>1_usize</span>;
|
||||
}
|
||||
|
||||
(<span class='ident'>s</span>, <span class='ident'>d</span>)
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>is_prime</span>(<span class='ident'>candidate</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
<span class='comment'>// First, iterate through the array of small primes and divide the</span>
|
||||
<span class='comment'>// candidate. If the candidate divides any of them, then we know the number</span>
|
||||
|
@ -514,11 +639,7 @@
|
|||
|
||||
<span class='kw'>let</span> <span class='ident'>result</span> <span class='op'>=</span> <span class='ident'>mod_exp</span>(<span class='kw-2'>&</span><span class='ident'>random</span>, <span class='kw-2'>&</span>(<span class='ident'>candidate</span> <span class='op'>-</span> <span class='number'>1_usize</span>), <span class='ident'>candidate</span>);
|
||||
|
||||
<span class='kw'>if</span> <span class='ident'>result</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='boolval'>true</span>
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='boolval'>false</span>
|
||||
}
|
||||
<span class='ident'>result</span> <span class='op'>==</span> <span class='number'>1_usize</span>
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>miller_rabin</span>(<span class='ident'>candidate</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> <span class='ident'>bool</span> {
|
||||
|
@ -532,7 +653,7 @@
|
|||
<span class='kw'>if</span> <span class='ident'>x</span> <span class='op'>==</span> <span class='number'>1_usize</span> <span class='op'>||</span> <span class='ident'>x</span> <span class='op'>==</span> (<span class='ident'>candidate</span> <span class='op'>-</span> <span class='number'>1_usize</span>) {
|
||||
<span class='kw'>continue</span>;
|
||||
} <span class='kw'>else</span> {
|
||||
<span class='kw'>for</span> _ <span class='kw'>in</span> <span class='ident'>Int</span>::<span class='ident'>one</span>() .. <span class='ident'>s</span> <span class='op'>-</span> <span class='number'>1_usize</span> {
|
||||
<span class='kw'>for</span> _ <span class='kw'>in</span> <span class='ident'>Int</span>::<span class='ident'>one</span>()..<span class='ident'>s</span> <span class='op'>-</span> <span class='number'>1_usize</span> {
|
||||
<span class='ident'>x</span> <span class='op'>=</span> <span class='ident'>mod_exp</span>(<span class='kw-2'>&</span><span class='ident'>x</span>, <span class='kw-2'>&</span><span class='ident'>Int</span>::<span class='ident'>from</span>(<span class='number'>2</span>), <span class='ident'>candidate</span>);
|
||||
<span class='kw'>if</span> <span class='ident'>x</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='kw'>return</span> <span class='boolval'>false</span>;
|
||||
|
@ -547,33 +668,32 @@
|
|||
<span class='boolval'>true</span>
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>mod_exp</span>(<span class='ident'>base</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>, <span class='ident'>exponent</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>, <span class='ident'>modulus</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> <span class='ident'>Int</span> {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>result</span> <span class='op'>=</span> <span class='ident'>Int</span>::<span class='ident'>one</span>();
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>base</span> <span class='op'>=</span> <span class='ident'>base</span>.<span class='ident'>clone</span>();
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>exponent</span> <span class='op'>=</span> <span class='ident'>exponent</span>.<span class='ident'>clone</span>();
|
||||
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>test</span>)]</span>
|
||||
<span class='kw'>mod</span> <span class='ident'>tests</span> {
|
||||
<span class='kw'>use</span> <span class='ident'>ramp</span>::<span class='ident'>Int</span>;
|
||||
<span class='kw'>use</span> <span class='kw'>super</span>::{<span class='ident'>fermat</span>, <span class='ident'>miller_rabin</span>};
|
||||
|
||||
<span class='kw'>while</span> <span class='ident'>exponent</span> <span class='op'>></span> <span class='number'>0_usize</span> {
|
||||
<span class='kw'>if</span> <span class='kw-2'>&</span><span class='ident'>exponent</span> <span class='kw-2'>&</span> <span class='number'>1_usize</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='ident'>result</span> <span class='op'>=</span> (<span class='kw-2'>&</span><span class='ident'>base</span> <span class='op'>*</span> <span class='ident'>result</span>) <span class='op'>%</span> <span class='ident'>modulus</span>;
|
||||
}
|
||||
|
||||
<span class='ident'>base</span> <span class='op'>=</span> (<span class='kw-2'>&</span><span class='ident'>base</span>.<span class='ident'>pow</span>(<span class='number'>2</span>)) <span class='op'>%</span> <span class='ident'>modulus</span>;
|
||||
<span class='ident'>exponent</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>exponent</span> <span class='op'>>></span> <span class='number'>1</span>;
|
||||
<span class='attribute'>#[<span class='ident'>test</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>test_fermat_pass</span>() {
|
||||
<span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>fermat</span>(<span class='kw-2'>&</span><span class='ident'>Int</span>::<span class='ident'>from</span>(<span class='number'>7919</span>)));
|
||||
}
|
||||
|
||||
<span class='ident'>result</span>
|
||||
}
|
||||
|
||||
<span class='kw'>fn</span> <span class='ident'>rewrite</span>(<span class='ident'>candidate</span>: <span class='kw-2'>&</span><span class='ident'>Int</span>) <span class='op'>-></span> (<span class='ident'>Int</span>, <span class='ident'>Int</span>) {
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>d</span> <span class='op'>=</span> <span class='ident'>candidate</span> <span class='op'>-</span> <span class='number'>1_usize</span>;
|
||||
<span class='kw'>let</span> <span class='kw-2'>mut</span> <span class='ident'>s</span> <span class='op'>=</span> <span class='ident'>Int</span>::<span class='ident'>zero</span>();
|
||||
|
||||
<span class='kw'>while</span> <span class='kw-2'>&</span><span class='ident'>d</span> <span class='kw-2'>&</span> <span class='number'>1</span> <span class='op'>==</span> <span class='number'>1_usize</span> {
|
||||
<span class='ident'>d</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>d</span> <span class='op'>>></span> <span class='number'>1_usize</span>;
|
||||
<span class='ident'>s</span> <span class='op'>=</span> <span class='kw-2'>&</span><span class='ident'>s</span> <span class='op'>+</span> <span class='number'>1_usize</span>;
|
||||
<span class='attribute'>#[<span class='ident'>test</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>should_panic</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>test_fermat_fail</span>() {
|
||||
<span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>fermat</span>(<span class='kw-2'>&</span><span class='ident'>Int</span>::<span class='ident'>from</span>(<span class='number'>7920</span>)));
|
||||
}
|
||||
|
||||
(<span class='ident'>s</span>, <span class='ident'>d</span>)
|
||||
<span class='attribute'>#[<span class='ident'>test</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>test_miller_rabin_pass</span>() {
|
||||
<span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>miller_rabin</span>(<span class='kw-2'>&</span><span class='ident'>Int</span>::<span class='ident'>from</span>(<span class='number'>7919</span>)));
|
||||
}
|
||||
|
||||
<span class='attribute'>#[<span class='ident'>test</span>]</span>
|
||||
<span class='attribute'>#[<span class='ident'>should_panic</span>]</span>
|
||||
<span class='kw'>fn</span> <span class='ident'>test_miller_rabin_fail</span>() {
|
||||
<span class='macro'>assert</span><span class='macro'>!</span>(<span class='ident'>miller_rabin</span>(<span class='kw-2'>&</span><span class='ident'>Int</span>::<span class='ident'>from</span>(<span class='number'>7920</span>)));
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
</section>
|
||||
|
|
Loading…
Add table
Reference in a new issue