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

C 수의 인수의 최소 합을 찾는 프로그램은?

<시간/>

숫자의 인수의 최소 합을 찾는 프로그램입니다. 이 문제를 해결하기 위한 논리는 모든 요소 집합을 찾아 추가하는 것입니다. 모든 요소 집합에 대해 동일한 작업을 수행한 다음 모든 요소를 ​​비교합니다. 그런 다음 이 합계의 최소값을 모두 찾으십시오.

Input: n=12
Output: 7

설명

먼저 숫자 n의 인수를 찾은 다음 합하고 합을 최소화합니다. 다음은 12와 인수의 합을 다양한 방식으로 인수분해하는 다양한 방법입니다.

12 = 12 * 1 = 12 + 1 = 13
12 = 2 * 6 = 2 + 6 = 8
12 = 3 * 4 = 3 + 4 = 7
12 = 2 * 2 * 3 = 2 + 2 + 3 = 7
Therefore minimum sum is 7

예시

#include<iostream>
using namespace std;
int main() {
   int n = 12;
   int sum = 0;
   for (int i = 2; i * i <= n; i++) {
      while (n % i == 0) {
         sum += i;
         n /= i;
      }
   }
   sum += n;
   cout << sum;
   return 0;
}