1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-08-04 15:07:47 +00:00

factor::factor: Use u64::trailing_zero instead of iterated division

No significant performance impact (most of the time is spent elsewhere),
but an easy and satisfying fix nevertheless.
This commit is contained in:
nicoo 2020-05-24 15:41:23 +02:00
parent a1b2522750
commit bc11e57962

View file

@ -83,9 +83,10 @@ fn factor(mut n: u64) -> Factors {
return factors;
}
while n % 2 == 0 {
n /= 2;
factors.push(2);
let z = n.trailing_zeros();
if z > 0 {
factors.add(2, z as u8);
n = n >> z;
}
if n == 1 {