in reply to Converting a Number into a Radical

I gather we're concerned only with square roots of integers and that, for example, if the answer is sqrt(18), you want to see it presented as

To achieve this you'll first want to factorise the integer - you could use something like Math::Factor::XS or Math::Prime::Util.

To stick with the above example, 18 factorises to the primes 2,3,3 - multiply those primes together and you end up with 18.

Notice that the "3" occurs twice - hence you can write the solution as

For sqrt(1050) - the prime factors are 2,3,5,5,7, with the "5" occurring twice, and the solution is therefore:

Cheers,

Rob

`3 x sqrt(2)`instead of simply`sqrt(18)`.To achieve this you'll first want to factorise the integer - you could use something like Math::Factor::XS or Math::Prime::Util.

To stick with the above example, 18 factorises to the primes 2,3,3 - multiply those primes together and you end up with 18.

Notice that the "3" occurs twice - hence you can write the solution as

`3 * sqrt(2)`.For sqrt(1050) - the prime factors are 2,3,5,5,7, with the "5" occurring twice, and the solution is therefore:

That's essentially how it's done - I don't know if there's a module that does it all for you, or whether you'll have to program a good portion of it yourself. (Perhaps Math::NumSeq might also have something to offer.)5 * sqrt(2 * 3 * 7) = 5 * sqrt(42)

Cheers,

Rob

In Section
Seekers of Perl Wisdom