> 백엔드 개발 > C++ > C 프로그램 참여 횟수는?

C 프로그램 참여 횟수는?

WBOY
풀어 주다: 2023-09-02 15:41:08
앞으로
829명이 탐색했습니다.

C 프로그램 참여 횟수는?

여기서 약혼 번호를 볼 수 있습니다. 이것은 한 숫자의 실제 인수의 합이 다른 숫자의 실제 인수의 합보다 1 더 많은 숫자 쌍입니다. 우리는 이 쌍을 찾아야 합니다

예를 들어 이 쌍은 (48, 75)와 같습니다. 따라서 48의 약수는 {1, 2, 3, 4, 6, 8, 12, 16, 24}이고 합은 76입니다. 마찬가지로 75의 약수는 {1, 3, 5, 15, 25}이므로 합은 49입니다.

Algorithm

약속 쌍(n) -

begin
   for num in range 1 to n, do
      sum := 1
      for i in range 2 to num, do
         if num is divisible by i, then
            sum := sum + i
            if i * i is not same as num, then
               sum := sum + num / i
            end if
         end if
         if sum > num, then
            num2 := sum – 1
            sum2 := 1
            for j in range 2 to num2, do
               if num2 is divisible by j, then
                  sum2 := sum2 + j
                  if j * j is not same as num2, then
                     sum2 := sum2 + num2 / j
                  end if
               end if
            done
            if sum2 = num + 1, then
               print the pair num and num2
            end if
         end if
      done
   done
end
로그인 후 복사

Example

#include <iostream>
using namespace std;
void BetrothedPairs(int n) {
   for (int num = 1; num < n; num++) {
      int sum = 1;
      for (int i = 2; i * i <= num; i++) { //go through each number to get proper divisor
         if (num % i == 0) {
            sum += i;
            if (i * i != num) //avoid to include same divisor twice
            sum += num / i;
         }
      }
      if (sum > num) {
         int num2 = sum - 1;
         int sum2 = 1;
         for (int j = 2; j * j <= num2; j++){
            if (num2 % j == 0) {
               sum2 += j;
               if (j * j != num2)
               sum2 += num2 / j;
            }
         }
         if (sum2 == num+1)
         cout << "(" << num << ", " << num2 <<")" << endl;
      }
   }
}
int main() {
   int n = 5000;
   BetrothedPairs(n);
}
로그인 후 복사

Output

1
로그인 후 복사

위 내용은 C 프로그램 참여 횟수는?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿