예를 들어 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