Projet Euler Problem1をPHPで解いてみた

まずは、この記事を書くにあたり心構えを先に記述しますので、ぜひ一読をお願いします。

現在大学院1年生で、就活シーズン真っ盛りですが海外新卒就職を目指しているので、就活をしていません。なので、この時期を使ってスキル爆上げしていこうと思い、Project Eulerを解いて記していきます。

また、現在プロサーというプログラミングサークルで勉強していますが、サークル内の課題を提出するときは、何度も見直して、

  • 可読性が良いか
  • 統一性があるか
  • 冗長ではないか
  • 論理的にOKか

など、気をつけていますが、それ以外の場面でコードを書くとき(paiza、Project Euler、研究活動)は、クソコードを書いている自覚があるので、記事に残すことで、改善していこうという次第です。

軽くProject Eulerの説明をしておきます。

プロジェクト・オイラーProject Euler、名称はレオンハルト・オイラー由来)は、数学やプログラミングなどに興味を持つ大人や学生が主な利用者であり、プログラミング (コンピュータ)による一連の計算問題の解決を目的としたウェブサイトである。(Wikipedia)

これから、Project Euler をProblem1からPHPで解いていきます。なぜ処理速度の速いC++やPython, Javaなどでななく、PHPかというとPHPしか書けないからですwww

ちなみに英語版はこちら

Contents

Project Euler Problem1 (3と5の倍数)

「10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.

同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.」

Project Euler Problem1 解答

Project Euler Problem1の解答です。間違っていたり、おかしいところがあればご指摘よろしくお願いします。

<?php
for ($i = 1; $i < 1000; $i++) {
	if ($i % 3 == 0 || $i % 5 == 0) {
		//echo $i . "\n";
		$sum += $i;
	}
}
echo $sum . "\n";
?>

Project Euler Problem1 解説・解釈

1から999まで$iをインクリメントさせて、「3で割り切れるか」、もしくは「5で割り切れるか」するとその数字を$sumに足していく。

その他の解答

また、3の倍数と5の倍数を足して、15の倍数で引くという方法もあったみたいですね。そうすれば自然数の和の公式を使えたっぽいですね。解けただけではなく、違う考え方を見てみるのも大切そうなので、その他の解答で紹介していきます。

参考 : https://mathmatik.jp/2017/01/30/pe1/

コメント

  1. […] Projet Euler Problem1をPHPで解いてみた まずは、この記事を書くにあたり心構えを先に記述しますので、ぜひ一読をお願いします。 […]