factor: expand comments

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2017-04-09 23:12:38 +02:00
parent 1d232fd440
commit 7e5f2f3b51

View File

@ -107,9 +107,12 @@ static NOINLINE void factorize(wide_t N)
factor = 3; factor = 3;
factor2 = 3 * 3; factor2 = 3 * 3;
for (;;) { for (;;) {
while ((N % factor) == 0) { /* The division is the most costly part of the loop.
* On 64bit CPUs, takes at best 12 cycles, often ~20.
*/
while ((N % factor) == 0) { /* not likely */
N = N / factor; N = N / factor;
printf(" %u"HALF_FMT"", factor); printf(" %u"HALF_FMT, factor);
max_factor = isqrt_odd(N); max_factor = isqrt_odd(N);
} }
next_factor: next_factor:
@ -122,8 +125,8 @@ static NOINLINE void factorize(wide_t N)
factor += 2; factor += 2;
/* Rudimentary wheel sieving: skip multiples of 3: /* Rudimentary wheel sieving: skip multiples of 3:
* Every third odd number is divisible by three and thus isn't a prime: * Every third odd number is divisible by three and thus isn't a prime:
* 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37... * 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47...
* ^ ^ ^ ^ ^ ^ ^ _ ^ ^ _ ^ * ^ ^ ^ ^ ^ ^ ^ _ ^ ^ _ ^ ^ ^ ^
* (^ = primes, _ = would-be-primes-if-not-divisible-by-5) * (^ = primes, _ = would-be-primes-if-not-divisible-by-5)
*/ */
--count3; --count3;