サンプル・プログラムの実行例
サンプル・プログラム
PrimeDay.php | サンプル・プログラム本体。 |
pahooCalendar.php | 暦計算クラス pahooCalendar。 暦計算クラスの使い方は「PHPで日出没・月出没・月齢・潮を計算」を参照。include_path が通ったディレクトリに配置すること。 |
サンプル・プログラムの解説
254: //pahooCalendarクラス
255: $pcl = new pahooCalendar();
256: $pcl->setLanguage('jp');
257:
258: //素数日一覧を求める
259: if ($errmsg == '') {
260: $msg = "<table>\n";
261: $day = 13;
262: $cnt = 1;
263: $msg .= sprintf("<tr><td class=\"index\" colspan=\"3\">%04d年</td></tr>\n", $year);
264: for ($month = 1; $month <= 12; $month++) {
265: $dm = $pcl->getDaysInMonth($year, $month);
266: for ($day = 1; $day <= $dm; $day++) {
267: $yyyymmdd = sprintf('%04d%02d%02d', $year, $month, $day);
268: if (MillerRabinPrimalityTest($yyyymmdd)) {
269: $youbi = $pcl->getWeekString($year, $month, $day);
270: $msg .= sprintf("<tr><td>%02d</td><td>%02d月%02d日(%s)</td><td>%d</td></tr>\n", $cnt, $month, $day, $youbi, $yyyymmdd);
271: $cnt++;
272: }
273: }
274: }
275: $msg .= "</table>\n";
276: } else {
277: $msg = '';
278: }
ここでは、 sprintf 関数を使って年月日を連結した整数 $yyyymmdd を生成し、「PHPとPythonで巨大素数を扱う」で作成したミラー・ラビン素数判定関数 MillerRabinPrimalityTest を使って、その日が素数であるかどうかを判定している。
活用例
参考サイト
- PHPとPythonで巨大素数を扱う:ぱふぅ家のホームページ