update
numerics, gcd() and lcm[] functions implemented separately
update comments, the problem with square and multiply, seems to be with primality test
update