Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 합과 곱이 모두 N과 같은 두 숫자 찾는 방법

이 튜토리얼에서는 합과 곱이 모두 주어진 값 N과 같은 두 숫자를 찾는 프로그램을 다룹니다.

하나의 정수 값이 주어졌을 때, 두 수의 곱과 합이 모두 해당 값과 일치하는 두 개의 값을 찾는 것이 우리의 과제입니다.

문제 접근 방법

a + b = N이고 a × b = N을 만족하는 두 수 a와 b를 찾으려면 이차방정식을 활용하면 됩니다.

두 수를 근으로 갖는 이차방정식은 다음과 같은 형태가 됩니다.

x² − Nx + N = 0

근의 공식에 따라 두 값은 다음과 같이 계산됩니다.

x = (N ± √(N² − 4N)) / 2

여기서 판별식 D = N² − 4N이 음수가 되면 실수 범위에서 해가 존재하지 않으므로 "NO"를 출력하고 종료합니다.

예제 코드

#include <bits/stdc++.h>
using namespace std;
//a*b=N이고 a+b=N인
//두 값 a와 b를 찾는 함수
void calculateTwoValues(double N) {
   double val = N * N - 4.0 * N;
   if (val < 0) {
      cout << "NO";
      return;
   }
   double a = (N + sqrt(val)) / 2.0;
   double b = (N - sqrt(val)) / 2.0;
   cout << "Value of A:" << a << endl;
   cout << "Value of B:" << b << endl;
}
int main() {
   double N = 57.0;
   calculateTwoValues(N);
   return 0;
}

출력 결과

Value of A:55.9818
Value of B:1.01819

코드 설명

위 코드의 동작 과정을 단계별로 살펴보겠습니다.

1단계: 판별식 val = N² − 4N을 계산합니다. 이 값이 0보다 작으면 실수 해가 존재하지 않으므로 "NO"를 출력하고 함수를 종료합니다.

2단계: 판별식이 0 이상이라면 근의 공식을 사용해 두 값을 계산합니다. 큰 근은 (N + √val) / 2, 작은 근은 (N − √val) / 2로 구할 수 있습니다.

3단계: 계산된 두 값 a와 b를 출력합니다.

N = 57인 경우, 두 수의 합은 약 57(55.9818 + 1.01819 ≈ 57)이고 곱 역시 약 57이 되어 조건을 만족함을 확인할 수 있습니다.