ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
閏年の規則を一つの公式としたもので、4で割り切れれば閏年、ただし100で割り切れて400では割り切れない年は平年、というもの。これは地球の公転周期の有理数近似365.2422 ≒ 365 + 1/4 − 1/100 + 1/400より求めた式である。
現在使われている "グレゴリオ暦" は1582年10月15日(金曜日)より開始されており、その前日は "ユリウス暦" の1582年10月4日(木曜日)である。またユリウス暦の地球の公転周期は365 + 1/4で計算されていたために、この公式は使えない。公式の制限として1900年や2100年などは平年であるにも関らず、この式では閏年となってしまう。
この公式の特筆すべき点は、一年は3月から始まると仮定し、1・2月は前年の13・14月として計算するという点である。
実際のプログラムの例(C版) /* 曜日の算出関数(C言語版) 0:日〜6:土 */ int iGetDateOfWeek (int iYear, int iMonth, int iDay) { if ((iMonth == 1) || (iMonth == 2)) { iYear--; iMonth += 12; } return (iYear + iYear/4 - iYear/100 + iYear/400 + (13 * iMonth + 8)/5 + iDay) % 7; } /* 閏年の判定関数(C言語版) 閏年なら 1 が返る */ int iChkLeapYear (int iYear) { return (!(iYear%4)) && ((iYear%100) || (!(iYear%400))); } 実際のプログラムの例(Perl版) #!perl sub iGetDateOfWeek { my ($iYear, $iMonth, $iDay) = @_; if(($iMonth == 1) || ($iMonth == 2)) { $iYear --; $iMonth += 12; } return ($iYear + int($iYear/4) - int($iYear/100) + int($iYear/400) + int((13 * $iMonth + 8)/5) + $iDay) % 7; } sub iChkLeapYear { my ($iYear) = @_; return (!($iYear%4)) && (($iYear%100) || (!($iYear%400))); } #---- test program print "Year?: "; $y = <>; print "Month?: "; $m = <>; print "Day?: "; $d = <>; @week[(0..6)] = qw/Sun Mon Tue Wed Thu Fri Sat/; print "iGetDateOfWeek:".$week[iGetDateOfWeek($y, $m, $d)]."\n"; print "iChkLeapYear:".(iChkLeapYear($y)?'うるう年':'平年')."\n";
コメントなどを投稿するフォームは、日本語対応時のみ表示されます