```HB wrote:
> Hi, All,
>
> I am a beginner on programming now reading books by Chris Pine: Learn
> to Program.
>
> ...
>
>     while ( (s.to_i % 4 == 0 and s.to_i % 100 != 0) or (s.to_i % 100 ==
>           0 and s.to_i % 400 == 0 ))
>
> The key point of all the methods proposed in this thread is: deal
> with the years divisible by 400 first, the years divisible by 100
> second, and the years divisible by 4 last of all.
>
> Regards, Morton

Your complex conditional can be expressed more clearly with a series of
if statements:

start = 2000
finish = 2200

year = start

while year <= finish

is_leap =
if year % 400 == 0
true
elsif year % 100 == 0
false
else
year % 4 == 0
end

if is_leap: puts year
end

year += 1
end

Or you can use each() on a Range for your loop, and a case statement
inside the loop:

start = 2000
finish = 2200

user_range = start..finish

user_range.each do |year|

is_leap =
case
when year % 400 == 0
true
when year % 100 == 0
false
else
year % 4 == 0
end

if is_leap: puts year
end

year += 1
end
--
Posted via http://www.ruby-forum.com/.

```