Given integers a and b in the format a√b (a on the square root of b), make a program that will reduce b and increase a until the radical statement is fully simplified.

Example

input
a = 1
b = 16

output
4 root 1


In this instance, 1√16 = 4√1

Bonus - 25 chars for the ability to simplify radicals other than square root using another variable, c.

## marked as duplicate by Howard, Peter Taylor, Justin, Doorknob♦, aceJan 30 '14 at 21:46

f=lambda a,b:max((a*i,b/i/i)for i in range(1,b)if b%(i*i)==0)

• You can make it a lot shorter by using the ** operator and getting rid of unnecessary parens: f=lambda a,b,c:max((a*i,b/i**c)for i in range(1,b)if b%i**c==0) – Josh Jan 30 '14 at 18:01