C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で指定された数がプロニック数(Pronic Number)かどうかを判定する方法

プロニック数(Pronic Number)とは、点を長方形の形にきれいに配置できる数のことで、「矩形数」と呼ばれることもあります。その定義は非常にシンプルで、2つの連続する整数の積として表される数です。つまり、プロニック数 n は次の式で表せます。

n = x × (x + 1)

最初のいくつかのプロニック数を列挙すると、0, 2, 6, 12, 20, 30, 42, 56, 72, 90, 110, 132, 156, 182, 210, 240, 272, 306, 342 となります。

プロニック数の具体例

  • 2 = 1 × 2
  • 6 = 2 × 3
  • 12 = 3 × 4
  • 20 = 4 × 5
  • 30 = 5 × 6

プロニック数の判定アルゴリズム

ある数 num がプロニック数かどうかを判定するには、0 から √num までの各整数 i について「num == i × (i + 1)」が成り立つかどうかを順に調べます。条件を満たす i が1つでも見つかれば、その数はプロニック数であると判断できます。この方法の計算量は O(√n) であり、非常に効率的です。

C++での実装例

以下は、0から200までの範囲の数を判定し、プロニック数だけを出力するC++プログラムです。

#include <iostream>
#include <cmath>
using namespace std;

bool isPronicNumber(int num) {
    for (int i = 0; i <= (int)(sqrt(num)); i++)
        if (num == i * (i + 1))
            return true;
    return false;
}

int main() {
    for (int i = 0; i <= 200; i++)
        if (isPronicNumber(i))
            cout << i << " ";
    return 0;
}

実行結果

0 2 6 12 20 30 42 56 72 90 110 132 156 182

このプログラムでは、isPronicNumber 関数が数値の判定を担当し、main 関数が 0 から 200 までの整数を順番にチェックしています。√num までしかループしないため、大きな数でも高速に判定できるのがポイントです。

  1. C++でNが五角数(ペンタゴナル数)かどうかを判定するプログラム

    五角数とはある整数 N が与えられたとき、それが五角数(ペンタゴナル数)であるかどうかを判定するのが本記事の目的です。五角数とは、点を並べることで正五角形の形を描くことができる数のことです。これらの数は、五角形を構成する頂点や点として表現できます。五角数の例としては、次のような数列が挙げられます。1, 5, 12, 22, 35, 51, 70, 92 …五角数を判定する公式ある数が五角数かどうかは、以下の公式を利用して確認できます。p(n) = (3 × n² − n) / 2ここで、n は五角形を構成する点の個数を表します。この式から得られる値が順に 1, 5, 12, 22, 35… と

  2. アームストロング数を判定するC++プログラムの書き方と解説

    アームストロング数とはアームストロング数(Armstrong Number)とは、各桁の数字を「総桁数」乗した値の合計が、元の数そのものと等しくなる数のことです。例えば、153は3桁の数なので、各桁を3乗して足し合わせると元の数に戻ります。主なアームストロング数の例は以下の通りです。3 = 3^1 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153 371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371 407 = 4^3 + 0^3 + 7^3 = 64 + 0 + 343 = 407この性質を利用すると、任意の整数がアームスト