Skip to content

jbeisman/RegularNumGen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Regular Number Generator

A few functions for generating the Nth regular number

Regular numbers, also known as ugly numbers, Hamming numbers, and 5-smooth numbers, are numbers whose only prime divisors are 2, 3, and 5.

They are described by 2^i * 3^j * 5^k for non-negative i,j,k

The first 15 regular numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24

While that might make it look like regular numbers are densely distributed, they are not. After around 60, the ratio of regular numbers to non-regular (normal? irregular?) numbers decreases precipitously, and they are very sparse among larger integers.

Because they are dependent on the distribution of primes, regular numbers are randomly distributed throughout number space, and cannot be predicted analytically. The sparseness of their distribution highlights the importance of algorithmic scaling.

The functions contained here will calculate the Nth regular number. In order from slowest to fastest:

get_regular_factor(N)
get_regular_set(N)
get_regular_log_set(N)
get_regular_compact(N)
get_regular_divide_conquer(N)
get_regular_fast_geometric(N)

This code requires a C++17 compiler. To build it, clone this repo

git clone https://github.com/jbeisman/RegularNumGen

Then enter the directory and invoke the build script

cd RegularNumGen
sh build.sh

And run the executable

./install/bin/RegNumGen

About

A few functions for generating the Nth regular number

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published