장애물 없이 % 연산자를 사용하여 배수를 찾을 수 있습니다. 그러나 문제는 % 연산자를 사용할 수 없다는 것입니다.
여기서는 + 연산자를 사용합니다. 이전 배수에 3 또는 5를 더하면 배수를 얻을 수 있습니다. 예를 들어 보겠습니다.
입력
15
출력
1 2 3 - Multiple of 3 4 5 - Multiple of 5 6 - Multiple of 3 7 8 9 - Multiple 3 10 - Multiple of 5 11 12 - Multiple of 3 13 14 15 - Multiple of both 3 and 5
알고리즘
-
숫자 n.을 초기화합니다.
-
3의 다음 배수를 추적하기 위해 두 개의 숫자를 초기화합니다. 및 5.
- 처음에는 이 두 숫자가 3과 5가 됩니다.
-
1에서 반복하는 루프 작성 n.으로 둘 다 포함됩니다.
-
트랙을 가변적으로 사용하여 현재 숫자가 3의 배수인지 확인하십시오.
-
마찬가지로 5의 배수를 확인합니다.
-
3 또는 5의 배수인 경우 각각의 숫자를 추가하여 다음 배수를 얻습니다.
-
해당 텍스트를 콘솔에 인쇄합니다.
-
구현
다음은 위의 알고리즘을 C++로 구현한 것입니다.
#include <bits/stdc++.h> using namespace std; void findMultiplesOf3And5(int n) { int threeMultiple = 3; int fiveMultiple = 5; for (int i = 1; i <= n; i++) { bool _3 = false, _5 = false; if (i == threeMultiple) { threeMultiple += 3; _3 = true; } if (i == fiveMultiple) { fiveMultiple += 5; _5 = true; } if (_3 && _5) { cout << "Multiple of both 3 and 5" << endl; }else if (_3) { cout << "Multiple of 3" << endl; }else if (_5) { cout << "Multiple of 5" << endl; }else { cout << i << endl; } } } int main() { findMultiplesOf3And5(100); return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
1 2 Multiple of 3 4 Multiple of 5 Multiple of 3 7 8 Multiple of 3 Multiple of 5 11 Multiple of 3 13 14 Multiple of both 3 and 5 16 17 Multiple of 3 19 Multiple of 5 Multiple of 3 22 23 Multiple of 3 Multiple of 5 26 Multiple of 3 28 29 Multiple of both 3 and 5 31 32 Multiple of 3 34 Multiple of 5 Multiple of 3 37 38 Multiple of 3 Multiple of 5 41 Multiple of 3 43 44 Multiple of both 3 and 5 46 47 Multiple of 3 49 Multiple of 5 Multiple of 3 52 53 Multiple of 3 Multiple of 5 56 Multiple of 3 58 59 Multiple of both 3 and 5 61 62 Multiple of 3 64 Multiple of 5 Multiple of 3 67 68 Multiple of 3 Multiple of 5 71 Multiple of 3 73 74 Multiple of both 3 and 5 76 77 Multiple of 3 79 Multiple of 5 Multiple of 3 82 83 Multiple of 3 Multiple of 5 86 Multiple of 3 88 89 Multiple of both 3 and 5 91 92 Multiple of 3 94 Multiple of 5 Multiple of 3 97 98 Multiple of 3 Multiple of 5