1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//! The odd primes up to a limit, by the sieve of Eratosthenes on the odd numbers.
//!
//! The multiples of 3, 5 and 7 come from a pattern of 105 words, which repeats, as 105 words hold
//! `105 * 64` odd numbers, a multiple of `3 * 5 * 7`; the multiples of each other prime up to the
//! square root of the limit are crossed out from its square up, those of the primes below 64,
//! several to a word, a word at a time in a register.
/// The odd numbers up to a limit, one bit each, set for those that are not prime: bit `i` of the
/// words is the number `2i + 1`.
pub
/// The period of [`PATTERN`], in words.
const PERIOD: usize = 3 * 5 * 7;
/// The odd multiples of 3, 5 and 7 among the odd numbers of 105 words: bit `i` of word `w` is set
/// when `2 (64 w + i) + 1` is a multiple of one of them.
const PATTERN: = ;
/// The remainders of a number `x` by increasing divisors above `sqrt(x)`, with a division only
/// when the quotient changes: for divisors from `x / (q + 1)` to `x / q`, the quotient is `q`, and
/// the remainder `x - q d`.
pub