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

C++에서 2부터 10까지의 모든 숫자로 나누어 떨어지는 숫자 세기

<시간/>

예를 들어 num이라는 숫자가 주어지고 작업은 2, 3, 4, 5, 6, 7, 8, 9, 10으로 나눌 수 있는 범위 1에서 num까지의 숫자 개수를 계산하는 것입니다.

입력 - 정수 숫자 =10000

출력 − 2에서 10까지의 모든 숫자로 나누어 떨어지는 수는 다음과 같습니다. 3

설명 − 1에서 10000까지 2부터 10까지의 모든 숫자로 나누어 떨어지는 3개의 숫자가 있으며 이들은 -

2520-: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 21, 24, 28, 30, 35, 36, 40, 42, 45, 56, 60, 63, 70, 72, 84, 90, 105, 120, 126, 140, 168, 180, 210, 252, 280, 315, 360, 420, 504, 630, 840, 1260, 2520.
5040-: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 28, 30, 35, 36, 40, 42, 45, 48, 56, 60, 63, 70, 72, 80, 84, 90, 105, 112, 120, 126, 140, 144, 168, 180, 210, 240, 252, 280, 315, 336, 360, 420, 504, 560, 630, 720, 840, 1008, 1260, 1680, 2520, 5040
7560-: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 21, 24, 27, 28, 30, 35, 36, 40, 42, 45, 54, 56, 60, 63, 70, 72, 84, 90, 105, 108, 120, 126, 135, 140, 168, 180, 189, 210, 216, 252, 270, 280, 315, 360, 378, 420, 504, 540, 630, 756, 840, 945, 1080, 1260, 1512, 1890, 2520, 3780.

입력 - 정수 숫자 =20000

출력 − 2에서 10까지의 모든 숫자로 나누어 떨어지는 수는 − 3입니다.

설명 − 1부터 10000까지 7개의 숫자가 있으며 2부터 10까지의 모든 숫자로 나누어 떨어지는 수는 − 2520, 5040, 7560, 10080, 12600, 15120, 17640입니다.

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

주어진 문제를 해결하기 위한 여러 가지 접근 방식, 즉 순진한 접근 방식과 효율적인 접근 방식이 있을 수 있습니다. 먼저 순진한 접근 방식을 살펴보겠습니다. .

  • 숫자를 입력하세요. 예를 들어 num

  • 배열을 가져와서 2에서 10까지의 모든 숫자를 9인 고정 길이의 정수 배열 안에 저장합니다.

  • 임시 변수를 먼저 취하는 것은 숫자의 합계를 저장하는 count이고 다른 하나는 숫자의 배수인지 여부를 확인하는 플래그입니다.

  • i에서 1까지 루프 시작

  • 루프 내에서 num을 i로 설정하고 인덱스를 0으로 설정

  • 인덱스가 9보다 작을 때까지 시작, 즉 배열 크기

  • IF num % arr[index++] ==0을 확인한 다음 플래그를 1로 설정하고 그렇지 않으면 플래그를 0으로 설정

  • IF 플래그가 1인지 확인한 다음 카운트를 1 증가시킵니다.

  • 반품 횟수

  • 결과를 인쇄하십시오.

효율적인 접근

보시다시피 숫자에는 2에서 10까지의 모든 숫자로 나누어 떨어지는 패턴이 있습니다.

2부터 10까지의 모든 수로 나누어 떨어지는 가장 작은 수는 2520입니다.

5 * 7 * 8 * 9 = 2520(n = 1)
5 * 7 * 8 * 9 * 2 = 5040(n = 2)
5 * 7 * 8 * 9 * 3 = 7560(n = 3)
.
.

보시다시피 2520은 2, 3, 4, 5, 6, 7, 8, 9, 10으로 나눌 수 있는 모든 숫자의 공약수입니다. 따라서 주어진 숫자를 2520으로 나누면 결과가 나옵니다.

코드-1(순진한 접근 방식)

#include <bits/stdc++.h>
using namespace std;
int count(int num){
   int count = 0;
   int flag=0;
   int index=0;
   int arr[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10 };
   for (int i = 1; i <= num; i++){
      int num = i;
      index=0;
      while(index<9){
         if(num % arr[index++] == 0){
            flag=1;
         }
         else{
            flag=0;
            break;
         }
      }
      if (flag == 1){
         count++;
      }
   }
   return count;
}
int main(){
   int num = 10000;
   cout<<"Count numbers which are divisible by all the numbers from 2 to 10 are: "<<count(num);
return 0;
}

출력

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

Count numbers which are divisible by all the numbers from 2 to 10 are: 3

코드-2(효율적인 접근)

#include <bits/stdc++.h>
using namespace std;
int main(){
   int num = 10000;
   int count = num / 2520;
   cout<<"Count numbers which are divisible by all the numbers from 2 to 10 are: "<<count;
   return 0;
}

출력

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

Count numbers which are divisible by all the numbers from 2 to 10 are: 3