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

C 프로그래밍에서 2 또는 5로 나눌 수 있는 N까지의 숫자의 합

<시간/>

2 또는 5로 나누어 떨어지는 n개의 자연수의 합은 2로 나누어 떨어지는 N까지의 모든 자연수의 합과 5로 나누어 떨어지는 N까지의 모든 자연수의 합을 구하여 구할 수 있습니다. 이 두 합을 더하면 그런 다음 10으로 나눌 수 있는 N까지의 자연수의 합으로 빼면 원하는 결과가 나옵니다. 이 방법은 n의 큰 값까지 합을 찾는 데 사용할 수 있는 효율적인 방법입니다.

루프와 조건문을 사용한 다음 2 또는 5로 나눌 수 있는 모든 숫자를 추가하는 방법을 생각하는 사람도 있을 것입니다. 그러나 이 방법은 n차의 시간 복잡도를 갖기 때문에 비효율적입니다. 이것은 n의 큰 값에 대해 프로그램이 루프를 n번 실행한다는 것을 의미합니다. 그리고 이 실행은 프로그램을 무거워지게 할 것입니다.

2로 나누어 떨어지는 n개의 자연수의 합을 구하는 공식

Sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2

5로 나누어 떨어지는 n개의 자연수의 합을 구하는 공식

Sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2

10으로 나누어 떨어지는 n개의 자연수의 합을 구하는 공식

Sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2

원하는 출력

Sum = Sum2 + Sum5 - Sum10

예시

#include <stdio.h>
int main() {
   int n = 25;
   long int sum2, sum5, sum10;
   sum2 = ((n / 2) * (4 + (n / 2 - 1) * 2)) / 2;
   sum5 = ((n / 5) * (10 + (n / 5 - 1) * 5)) / 2;
   sum10 = ((n / 10) * (20 + (n / 10 - 1) * 10)) / 2;
   long int sum = sum2 + sum5 - sum10;
   printf("Sum is %d", sum);
   return 0;
}

출력

Sum is 201