2019年2月18日月曜日

開発環境

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 コメント:

コメントを投稿