← Commit list

7e5f2f3b5

Denys Vlasenko
Denys Vlasenko
2017-04-09
SUCCESS Duration: 206s

Subject

factor: expand comments

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

coreutils/factor.c+7 -4
@@ -107,9 +107,12 @@ static NOINLINE void factorize(wide_t N)
factor = 3;
factor2 = 3 * 3;
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;
- printf(" %u"HALF_FMT"", factor);
+ printf(" %u"HALF_FMT, factor);
max_factor = isqrt_odd(N);
}
next_factor:
@@ -122,8 +125,8 @@ static NOINLINE void factorize(wide_t N)
factor += 2;
/* Rudimentary wheel sieving: skip multiples of 3:
* 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)
*/
--count3;