A C++14-compatible physical units library with no dependencies and a single-file delivery option. Emphasis on safety, accessibility, performance, and developer experience.
Apache License 2.0
329
stars
21
forks
source link
Weaken `find_first_factor` contract to any prime #325
It turns out, none of our use cases require us to find the first
factor. All we really need is to find any prime factor. (And if the
number itself is prime, of course, then the only option will be to
return the number itself.)
Weakening this contract enables us to take advantage of faster factoring
methods that aren't guaranteed to find the smallest factor. Obviously,
we could use these faster methods to build a function that satisfies our
old contract, by repeatedly applying them to fully factor a number,
and then taking the smallest one. But this adds extra computation for
no clear benefit.
It turns out, none of our use cases require us to find the first factor. All we really need is to find any prime factor. (And if the number itself is prime, of course, then the only option will be to return the number itself.)
Weakening this contract enables us to take advantage of faster factoring methods that aren't guaranteed to find the smallest factor. Obviously, we could use these faster methods to build a function that satisfies our old contract, by repeatedly applying them to fully factor a number, and then taking the smallest one. But this adds extra computation for no clear benefit.
Helps #217.