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

C++で合計と積がどちらもNに等しい2つの数を見つける方法

このチュートリアルでは、x + y = n かつ x × y = n を満たす2つの数を見つけるC++プログラムを作成します。ただし、そのような数が存在しない場合もあります。その際は None を出力するようにします。それでは始めましょう。

解法の考え方

与えられた2つの値は、ある二次方程式の「解の和」と「解の積」に相当します。二次方程式の解と係数の関係より、判別式は n2 - 4n で表されます。この値が負( n2 - 4n < 0 )の場合、実数解は存在しないため、条件を満たす2つの数は見つかりません。

判別式が0以上の場合、求める2つの数は次の式で表されます。

$$\lgroup n + \sqrt{n^{2} - 4n}\rgroup/2$$ と $$\lgroup n - \sqrt{n^{2} - 4n}\rgroup/2$$

サンプルコード

それでは、実際のコードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
void findTwoNumbersWithSameSumAndProduct(double n) {
    double imaginaryValue = n * n - 4.0 * n;
    // 虚数解になるかどうかをチェック
    if (imaginaryValue < 0) {
        cout << "None";
        return;
    }
    // x と y を出力
    cout << (n + sqrt(imaginaryValue)) / 2.0 << endl;
    cout << (n - sqrt(imaginaryValue)) / 2.0 << endl;
}
int main() {
    double n = 50;
    findTwoNumbersWithSameSumAndProduct(n);
    return 0;
}

実行結果

上記のプログラムを実行すると、以下の出力が得られます。

48.9792
1.02084

まとめ

本チュートリアルでは、和と積がどちらもnに等しい2つの数を求める方法を解説しました。二次方程式の判別式の符号を確認するだけで、解の存在を簡単に判定できるのがポイントです。チュートリアルの内容について質問がある場合は、コメント欄でお気軽にお知らせください。

  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

  2. C++で2つの数値を加算するプログラムの書き方【サンプルコード付き】

    加算(足し算)は、最も基本的な算術演算の一つです。2つの数値を加算するプログラムは、指定された2つの数値の合計を計算し、その結果を画面に表示します。この記事では、C++で2つの数値を加算する方法を、変数を使った基本例と配列を使った応用例の2パターンに分けて解説します。例1:変数を使って2つの数値を加算するまずは、最もシンプルな方法です。2つの整数型変数を用意し、その合計を別の変数に格納して出力します。#include <iostream> using namespace std; int main() { int num1 = 15, num2 = 10, sum;