Source: https://people.csail.mit.edu/rivest/Rsapaper.pdf