Xác định năm này có phải là năm nhuận hay không

Ra là không đơn giản chỉ là 4 năm 1 lần.

1 Like

Năm 2000 có phải là năm nhuận không?

2000 % 400 = 0 :)). Thì là năm nhuận đó bạn :stuck_out_tongue:

Năm thường có 365 ngày. 365 ngày là thời jan để Trái Đất quay hết 1 vòng quanh Mặt Trời.
Con số này chỉ mang tính tương đối. Ngày thường có thể dài hơn 24 jờ. Số thời jan ít ỏi này bị zư ra và cộng zồn trong 4 năm được thời jan = 1 ngày, tức zư 6 jờ mỗi năm, 4 năm = 24 jờ. Cụ thể 6 jờ là 360 fút. 360/365= 0,98 fut (58,8 jây)/ngày = 2.45 jây/jờ. Tức là cứ 30 fut thì zư ra hơn 1 jây (1.22 jây).
Người ta gọi ngày này là ngày nhuận và năm có ngày zư ra này là năm nhuận. Năm nhuận là năm có 366 ngày. Cứ 4 năm lại có 1 năm nhuận.

Zựa vào khí hậu (mùa trong năm), vị trí của từng địa phương trên Trái Đất, người ta quy định tháng 1, 3, 5, 7, 8, 10, 12 có 31 ngày; thang 4, 6, 9, 11 có 30 ngày. Tháng 2 có 28 ngày. Ngày nhuận của 4 năm được đặt vào tháng 2. Vì vậy tháng 2 của năm nhuận có 29 ngày thay vì 28 ngày như các năm khác.

Cax tính năm nhuận:

Nếu (năm%4==0 và năm%100!=0 hoặc năm%400==0)
{
in "Nhuận";
}
không
{
in "Không fải nhuận";
}

Năm 1900 % 4 = 0 (đúng) và 1900 % 100 !=0 (sai) => không thỏa mãn
Xét tiếp 1900 % 400 = 0 (sai) => không thỏa mãn
==> 1900 không fải năm nhuận.

Năm 2000 % 4 = 0 (đúng) và 2000 % 100 !=0 (sai) => Không thỏa mãn
Xét tiếp 2000 % 400 = 0 (đúng) => Nhận já trị
==> 2000 là năm nhuận

Năm 2004 % 4 = 0 (đúng) và 2004 % 100 != 0 (đúng) => Nhận giá trị
==> 2004 là năm nhuận

Mô tả điều kiện
Nếu n mod 4=0 đúng và n mod 100 = 0 sai —> năm nhuận
Nếu n mod 4=0 đúng và n mod 100 =0 đúng và n mod 400 = 0 đúng —> năm nhuận

Chơi cách thô thiển nhất đó là cứ cho vòng for chạy từ năm nhuận 1692 và cứ cộng cho 4 miết đến khi nào lớn hơn hoặc bằng năm nhập vào. Nếu vòng for bị break bởi điều kiện bằng thì năm đó là năm nhuận, còn nếu vượt qua năm nhập vào <= không phải năm nhuận.

Vì định nghĩa thế nào là năm nhuận hiện nay còn nhiều ý kiến, lý luận “4 năm nhuận 1 lần” mà trong lịch lại bắt đầu từ năm thứ nhất, không có năm zero đã thấy bất ổn rồi :smiley:

2 Likes

Số La Mã không có chữ nào là 0 hết, có lẽ vì lí do này. Vả lại năm 1 nên hiểu là năm thứ nhất.

Vậy làm sao để kiểm tra năm nhuận?

Xét
S1 = tập các năm chia hết cho 4
S2 = tập các năm chia hết cho 100
S3 = tập các năm chia hết cho 400
Vậy tập năm nhuận SL = S1 \ S2 ⋂ S3
hay y ∈ SL <=> (4 \ y &&! 100 \ y) || 400 \ y, y > 1500

2 Likes

xác định vậy là dễ nhất nè: y % 4 == 0 && y % 128

đáng tiếc là ông Giáo hoàng Gregory ko có học Tin học nên ko thích chia cho 128.

3 Likes

Tính như này thì ~9600 năm lịch đi trễ 1 ngày :smiley: để như bây giờ thì khoảng 3000 năm.

1 solar year ~ 365d 5h 48m 45s
365 25 - 365.2421875 = 1/128

3 Likes

Vậy năm 100 có phải năm nhuận không mn?
96 % 4 = 0 => năm 96 là năm nhuận (thỏa mãn điều kiện 96%100 != 0 && 96 %4 =0)
Theo lý thuyết 4 năm thì nhuận 1 lần => năm 100 có nhuận. (1)
Nhưng theo điều kiện n%100 =0 nên n phải chia hết 400 mới là năm nhuận => năm 100 không phải năm nhuận (2)
(1), (2) mâu thuẫn. Giờ tin ông nào mọi người.

Theo lịch cũ (Julian) năm 100 vẫn nhuận :smiley: lịch mới (Gregorian) thì không (cái này mới theo chuẩn).

3 Likes

Tra theo lịch mới như thế nào đó bạn?
Vậy năm nhuận sau năm 96 gần nhất là năm nào bạn 104 à bạn :smiley:
Vậy k đúng với thuyết 365 ngày + 1/4 rồi nhỉ.
=> À đã search và hiểu.
OK, thanks bạn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?