Hi -- On Tue, 20 Sep 2005, Jeremy Tregunna wrote: > > On 19-Sep-05, at 7:15 PM, Gergely Kontra wrote: > >> Hi! >> >> Is there a similar construct to python's: >> >>>>> for n in range(2, 10): >> ... for x in range(2, n): >> ... if n % x == 0: >> ... print n, 'equals', x, '*', n/x >> ... break >> ... else: >> ... # loop fell through without finding a factor >> ... print n, 'is a prime number' >> ... >> 2 is a prime number >> 3 is a prime number >> 4 equals 2 * 2 >> 5 is a prime number >> 6 equals 2 * 3 >> 7 is a prime number >> 8 equals 2 * 4 >> 9 equals 3 * 3 > > Directly, yes; though hardly anybody writes code this way (at least I've > never seen anybody write something like this, like how I'm about to give it > to you). I'd see William Morgan's message for a better suggestion. > > for n in (2..10) do > for x in (2..n) do You'd want the ... range operator, so as to exclude the upper limit. > if n % x == 0 > puts "#{n} equals #{x} * #{n/x}" > break > else > puts "#{n} is a prime number" > end > end > end Have you run it? :-) It doesn't work the same way; it prints "...prime number" for *every* time a match isn't found, until a match is found. So, for example, you get: 7 is a prime number # printed 5 times (2,3,4,5,6) 8 equals 2 * 4 9 is a prime number 9 equals 3 * 3 David -- David A. Black dblack / wobblini.net