Project EulerのをC++で解く.
問題
Multiples of 3 or 5
https://projecteuler.net/problem=1
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
![](https://penguin-coffeebreak.com/wp-content/uploads/2021/07/東北きりたん_左向き_バストアップ_絶望.png)
英語わからない.和訳くれ
3と5の倍数10未満の自然数のうち, 3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり, これらの合計は 23 になる.
同じようにして, 1000 未満の 3 か 5 の倍数になっている数字の合計を求めよ.
解答
[su_accordion][su_spoiler title=”解答を表示” open=”no” style=”fancy” icon=”plus” anchor=”” anchor_in_url=”no” class=”my-custom-spoiler”]
233168
[/su_spoiler]
プログラム
3の倍数と5の倍数の判定を行う簡単な問題である.
nの倍数かどうか判定するためには,nで割り切れるかを判定すれば良い.
ソースコード
[su_accordion][su_spoiler title=”ソースコードを表示” open=”no” style=”fancy” icon=”plus” anchor=”” anchor_in_url=”no” class=”my-custom-spoiler”]
#include <iostream> namespace { bool IsDivisible(const long &target, const long &div) { if (target % div == 0) { return true; } return false; } } int main () { long answer = 0; const long minimum_number = 1; const long maximum_number = 1000; for (long = minimum_number ; num < maximum_number; ++num) { if (IsDivisble(num, 3) || IsDivisble(num, 5)) { answer += num; } } std::cout << "Answer is " << answer << std::endl; return 0; }
[/su_spoiler]
ソースコード(アルゴリズム)説明
ある値が割り切れるかを判定する関数
- 余り(剰余)がゼロの場合,True
- 余り(剰余)がゼロでない場合,False
bool IsDivisible(const long &target, const long &div) { if (target % div == 0) { return true; } return false; }
実行
$ g++ -O3 -o problem1 main.cpp $ ./problem1
Answer is 233168
リポジトリ(GitLab)
![](https://penguin-coffeebreak.com/wp-content/uploads/2021/08/東北きりたん_左向き_バストアップ_笑顔.png)
Project Eulerの問題をまとめたものはこちらのリポジトリにあるので,確認してみてください(⌒∇⌒)
最後に
![](https://penguin-coffeebreak.com/wp-content/uploads/2021/07/東北きりたん_左向き_バストアップ_通常.png)
内容に誤りや不具合,ご意見があればコメントを残して頂けるとありがたいです
アルゴリズム勉強のおすすめ書籍
アルゴリズムは,プログラミング言語自体の勉強ではなく,問題を解決するための手順や方法のこと.
プログラミング言語の基礎を身に付けた後に学ぶものがアルゴリズムである.
効率的や高速なプログラムを書くことが出来るようになるだろう.
コメント