Main> majscale[(1,1),(9,8),(5,4),(4,3),(3,2),(5,3),(15,8),(2,1)]
Main> map (\(x,y) -> (432.0 * (fromIntegral x)) / (fromIntegral y)) majscale
[432.0,486.0,540.0,576.0,648.0,720.0,810.0,864.0]
That's pretty cool. The whole major scale comes out as whole numbers in just intonation. (In 12-tone equal temperament it doesn't, because 12TET uses the 12th root of 2 as a uniform division of the octave.) This looks like your explanation isn't just a neat trick, it's likely to be the reason why 432hz was proposed as a standard in the first place.
Main> let scale = [(1,1),(16,15),(10,9),(9,8),(6,5),(5,4),(4,3),(45,32),(3,2),(8,5),(5,3),(15,8),(9,5),(15,8),(2,1)]
Main> map (\(x,y) -> (432.0 * (fromIntegral x)) / (fromIntegral y)) scale
[432.0,460.8,480.0,486.0,518.4,540.0,576.0,607.5,648.0,691.2,720.0,810.0,777.6,810.0,864.0]
..and if we construct a more chromatic scale, not all of them come out quite as whole numbers, but we don't have any repeating decimals or anything like that (though we would if we included weirder intervals like 8/7). Nice.
edit: This works for a just major scale constructed starting from A. If you construct a scale from a different root note, it might not work out quite as cleanly.