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

C++로 합과 곱이 모두 N과 같은 두 수 찾기

이 튜토리얼에서는 두 수(예: ab)가 다음 조건을 모두 만족하도록 만드는 프로그램을 다룹니다.

a + b = N 이고 a × b = N

수학적 접근 방법

두 방정식에서 a를 소거하면 bN에 대한 이차방정식을 얻을 수 있습니다.

b2 - bN + N = 0

이 이차방정식은 두 개의 근을 가지며, 각각의 근이 곧 ab의 값이 됩니다. 판별식(determinant) 공식을 사용해 근을 구하면 다음과 같습니다.

$a= \frac{N-\sqrt{N*N-4N}}{2} \\ b= \frac{N+\sqrt{N*N-4N}}{2}$

C++ 예제 코드

#include <iostream>
// 제곱근 함수를 위한 헤더 파일
#include <math.h>
using namespace std;
int main() {
   float N = 12,a,b;
   cin >> N;
   // 판별식 공식으로 근 계산
   a = (N + sqrt(N*N - 4*N))/2;
   b = (N - sqrt(N*N - 4*N))/2;
   cout << "두 정수는 :" << endl;
   cout << "a - " << a << endl;
   cout << "b - " << b << endl;
   return 0;
}

실행 결과

두 정수는 :
a - 10.899
b - 1.10102

위 코드에서 입력값 N = 12일 때, 두 수의 합은 약 12이고 곱 역시 약 12가 되는 것을 확인할 수 있습니다. 참고로 실수 범위에서만 해가 존재하며, 판별식(N² - 4N)이 음수가 되면 실근이 존재하지 않으므로 입력값 검증 로직을 추가하는 것이 좋습니다.