Pit Capitain wrote:

>   (2...50).reject{|n|(2..Math.sqrt(n)).find{|x|n % x == 0}}
>
> It's not what the OP wanted, though.

include Math
primes = (2...10).map{|n|(2..sqrt(n)).find{|x|n % x == 0}}
primes.each_with_index do |x,n|
n += 2
if x then puts "#{n} equals #{x} * #{n/x}"
else puts "#{n} is a prime number" end
end
__END__

It is now.

include Math
primes = (2...10).map{|n|[n,(2..sqrt(n)).find{|x|n % x == 0}]}
primes.each do |n,x|
if x then puts "#{n} equals #{x} * #{n/x}"
else puts "#{n} is a prime number" end
end
__END__

So, no, there may not be an exact equivalent to for/else, but as with
interface definitions in Python/Ruby, you generally find that the need
isn't there like it is in the other language. In Java, types are
staticly declared, and mixins are nonexistent, making interfaces very
important. In Python, there's a difference between statements and
expressions (IIUC), making special iterator constructs like for/else
important. IOW, it shouldn't be considered a fault of Ruby's that it
doesn't include that construct -- it doesn't need it.

Devin