C++でネスビットの不等式を判定する方法
ネスビットの不等式(Nesbitt's Inequality)は、正の実数に対して成り立つ有名な数学的不等式の一つです。次のように定義されます。
a / (b + c) + b / (c + a) + c / (a + b) ≥ 1.5(ただし a > 0、b > 0、c > 0)
この不等式は、相加平均・調和平均の関係やコーシー・シュワルツの不等式などを用いて証明できることでも知られています。本記事では、与えられた3つの数値がこのネスビットの不等式を満たしているかどうかを、C++のプログラムで判定する方法を解説します。
アルゴリズム
判定の手順は非常にシンプルで、以下の流れで行います。
- 3つの数値 a、b、c を用意する。
- 式の各項 a / (b + c)、b / (c + a)、c / (a + b) の値をそれぞれ計算する。
- 計算した3つの値をすべて足し合わせる。
- 合計が 1.5 以上であれば「ネスビットの不等式を満たす」、そうでなければ「満たさない」と判定する。
C++での実装
以下は、上記のアルゴリズムをC++で実装したサンプルコードです。
#include <bits/stdc++.h>
using namespace std;
bool isValidNesbitt(double a, double b, double c) {
double A = a / (b + c);
double B = b / (a + c);
double C = c / (a + b);
double result = A + B + C;
return result >= 1.5;
}
int main() {
double a = 3.0, b = 4.0, c = 5.0;
if (isValidNesbitt(a, b, c)) {
cout << "ネスビットの不等式は満たされています" << endl;
} else {
cout << "ネスビットの不等式は満たされていません" << endl;
}
return 0;
}実行結果
上記のコードをコンパイルして実行すると、次のような結果が出力されます。
ネスビットの不等式は満たされています
この例では a = 3.0、b = 4.0、c = 5.0 を入力としており、各項の合計は約 1.55 となるため、不等式が成立していることが確認できます。なお、浮動小数点数を扱うため、厳密な判定が必要な場合は誤差への配慮も検討するとよいでしょう。
-
C++で質素数(Frugal Number)を判定する方法【サンプルコード付き】
この記事では、正の整数 N が与えられたときに、その数が質素数(Frugal Number)であるかどうかを判定するプログラムを C++ で作成する方法を解説します。 質素数とは? 質素数(FRUGAL NUMBER)とは、その数自身の桁数が、素因数分解による表現の桁数よりも厳密に大きい数のことです。 例:625 の場合 625 を素因数分解すると 54 となります。 625 自身の桁数:3 桁 54 の表現の桁数:2 桁 3 は 2 よりも厳密に大きいため、625 は質素数です。 最初のいくつかの質素数:125、128、243、256、343、512、625 など 問題を理解するための具
-
C++で五胞体数(ペンタトープ数)を求める方法
五胞体数とは? 五胞体数(ペンタトープ数)は、パスカルの三角形の第5の対角線上に現れる数列として知られています。この数列を定義するには、パスカルの三角形に少なくとも5つの数が必要となるため、数列の最初の数はパスカルの三角形の第4行である 1 4 6 4 1 から始まります。 本チュートリアルでは、n番目の五胞体数を求める方法を解説します。まずは具体的な例を見てみましょう。 入力 : 1出力 : 1入力 : 4出力 : 35 以下の図から出力を確認できます。 この問題は数列に関するものなので、解法ではまず数列のパターンを見つけることから始めます。 解法のアプローチ このプログラムでは、数列の