開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Xcode - Apple
- Windows 10 Pro (OS)
- Visual Studio (コンパイラー)
- Visual Studio Code (Text Editor)
- C++17 (プログラミング言語)
Modern C++チャレンジ ―C++17プログラミング力を鍛える100問 (Marius Bancila(著)、島 敏博(監修)、黒川 利明(翻訳)、オライリージャパン)の1章(数学の問題)、問題4(与えられた正の整数より小さい最大の素数)の解答を求めてみる。
コード
#include <iostream> bool is_prime(size_t n) { if (n <= 1) { return false; } if (n == 2) { return true; } for (size_t i = 2; i < n; i++) { if (n % i == 0) { return false; } } return true; } size_t max_prime(size_t n) { for (size_t i = n - 1; i > 1; i--) { if (is_prime(i)) { return i; } } return 0; } int main() { for (size_t i = 3; i < 20; i++) { std::cout << i << ": " << max_prime(i) << std::endl; } for (size_t i = 100; i < 120; i++) { std::cout << i << ": " << max_prime(i) << std::endl; } }
入出力結果(cmd(コマンドプロンプト)、Terminal)
Active code page: 65001 C:\Users\...>cl sample4.cpp && sample4.exe Microsoft(R) C/C++ Optimizing Compiler Version 19.16.27027.1 for x64 Copyright (C) Microsoft Corporation. All rights reserved. sample4.cpp C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xlocale(319): warning C4530: C++ 例外処理を使っていますが、アンワインド セマンティクスは有効にはなりません。/EHsc を指定してください。 Microsoft (R) Incremental Linker Version 14.16.27027.1 Copyright (C) Microsoft Corporation. All rights reserved. /out:sample4.exe sample4.obj 3: 2 4: 3 5: 3 6: 5 7: 5 8: 7 9: 7 10: 7 11: 7 12: 11 13: 11 14: 13 15: 13 16: 13 17: 13 18: 17 19: 17 100: 97 101: 97 102: 101 103: 101 104: 103 105: 103 106: 103 107: 103 108: 107 109: 107 110: 109 111: 109 112: 109 113: 109 114: 113 115: 113 116: 113 117: 113 118: 113 119: 113 C:\Users\...>
素数判定は単純なアルゴリズムを使用。
0 コメント:
コメントを投稿