Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 분수를 가장 낮은 형식으로 줄이십시오.

<시간/>

두 개의 정수 Num1과 Num2가 입력으로 주어집니다. 정수는 분수 Num1/Num2로 나타낼 수 있습니다. . 목표는 이 분수를 가장 낮은 형태로 줄이는 것입니다.

GCD를 사용하여 최고 분모 찾기

  • 두 숫자의 최대 공약수를 계산합니다.

  • 두 숫자를 해당 gcd로 나눕니다.

  • 두 변수를 나누기 후 몫으로 설정합니다.

  • 가장 낮은 분수는 Num1/Num2입니다.

예시

입력 − Num1=22 Num2=10

출력 - 숫자1 =11 숫자2 =5

가장 낮은 비율:11/5

설명 - 22와 10의 GCD는 2입니다.

22/2=11 및 10/2=5

가장 낮은 분수는 11/5입니다.

입력 − Num1=36 Num2=40

출력 - 숫자1 =9 숫자2 =10

최저 분수:9/10

설명 - 36과 40의 GCD는 4입니다.

40/4=10 및 36/4=9

가장 낮은 분수는 9/10입니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

이 접근 방식에서는 먼저 재귀 접근 방식을 사용하여 입력 숫자의 GCD를 계산합니다. 두 숫자를 모두 GCD로 나누고 몫을 구합니다. 이 몫은 가장 낮은 부분의 일부가 됩니다.

  • 입력 변수 Num1과 Num2를 사용합니다.

  • findGCD(int a, int b) 함수는 num1과 num2를 취하여 둘 다의 gcd를 반환합니다.

  • b가 0이면 findGCD(b,a%b)를 반환합니다.

  • 함수 lowFraction(int num1, int num2)은 두 숫자를 모두 입력으로 받아 가장 낮은 분수를 인쇄합니다.

  • gcd에 대한 가변 denom을 가져옵니다.

  • num1=num1/denom 및 num2=num2/denom을 설정합니다.

  • num1과 num2를 출력합니다.

  • 가장 낮은 분수를 num1/num2로 인쇄합니다.

예시

#include <bits/stdc++.h>
using namespace std;
int findGCD(int a, int b) {
   if (b == 0)
      return a;
      return findGCD(b, a % b);
   }
   void lowestFraction(int num1, int num2){
      int denom;
      denom = findGCD(num1,num2);
      num1/=denom;
      num2/=denom;
      cout<< "Num1 = " << num1<<endl;
      cout<< "Num2 = " << num2<<endl;
      cout<< "Lowest Fraction : "<<num1<<"/"<<num2;
}
int main(){
   int Num1 = 14;
   int Num2 = 8;
   lowestFraction(Num1,Num2);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Num1 = 7
Num2 = 4
Lowest Fraction : 7/4