和と積がどちらもNに等しくなる2つの数を求めるC++プログラム
この記事では、a + b = N かつ a × b = N を同時に満たすような2つの数「a」と「b」を見つけるプログラムの作成方法について解説します。
a + b = N および a × b = N
数学的なアプローチ
まず、この問題は代数を使って整理できます。2つの式から「a」を消去すると、「b」と「N」に関する二次方程式が得られます。
b2 − bN + N = 0
この二次方程式には2つの解(根)があり、それぞれが「a」と「b」の値に対応します。解の公式(判別式を利用する方法)を用いて解を求めると、aとbは次のように表されます。
$a= (N-\sqrt{N*N-4N)}/2\\ b= (N+\sqrt{N*N-4N)}/2 $
なお、実数解が存在するためには判別式 N² − 4N ≥ 0 を満たす必要があります。つまり、N ≥ 4(または N ≤ 0)の場合にのみ、条件を満たす実数の組み合わせが存在します。
サンプルコード
#include <iostream>
//平方根関数を使用するためのヘッダーファイル
#include <math.h>
using namespace std;
int main() {
float N = 12,a,b;
cin >> N;
//判別式を利用して2つの解を求める
a = (N + sqrt(N*N - 4*N))/2;
b = (N - sqrt(N*N - 4*N))/2;
cout << "The two integers are :" << endl;
cout << "a - " << a << endl;
cout << "b - " << b << endl;
return 0;
}
実行結果
The two integers are : a - 10.899 b - 1.10102
このように、入力値 N = 12 の場合、「a ≒ 10.899」「b ≒ 1.10102」という2つの数が求まりました。実際に確認すると、10.899 + 1.10102 ≒ 12 であり、10.899 × 1.10102 ≒ 12 となり、両方の条件を満たしていることがわかります。
この手法は、二次方程式の解の公式を応用したシンプルなものですが、計算量が O(1) であるため非常に効率的です。条件を満たす数のペアを高速に求めたい場面で活用できるでしょう。
-
【C++入門】2つの数値を乗算するプログラムの書き方
乗算(掛け算)の基本 2つの数値 a と b の乗算とは、両者を掛け合わせて「積」を求める計算のことです。概念的には、a の値を b の回数分だけ足し合わせることで、a と b の積を求めることができます。 例: 5 * 4 = 20 7 * 8 = 56 9 * 9 = 81 *演算子を使って2つの数値を乗算するプログラム C++では、* 演算子を使用することで、2つの数値の積をシンプルに計算できます。以下は、* 演算子を使って2つの数値を乗算するプログラムです。 サンプルコード #include <iostream> using namespace std; int main
-
C++で2つの数値を加算するプログラムの書き方【サンプルコード付き】
加算(足し算)は、最も基本的な算術演算の一つです。2つの数値を加算するプログラムは、指定された2つの数値の合計を計算し、その結果を画面に表示します。この記事では、C++で2つの数値を加算する方法を、変数を使った基本例と配列を使った応用例の2パターンに分けて解説します。例1:変数を使って2つの数値を加算するまずは、最もシンプルな方法です。2つの整数型変数を用意し、その合計を別の変数に格納して出力します。#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum;