मान लीजिए कि हमारे पास एक संख्या N है। एक सकारात्मक पूर्णांक x के एक फ़ंक्शन gcdSum(x) पर विचार करें, जो कि अंकों के योग के साथ उस पूर्णांक का gcd है। हमें सबसे छोटा पूर्णांक x>=n ज्ञात करना है, जैसे कि gcdSum(x)> 1.
इसलिए, यदि इनपुट एन =31 की तरह है, तो आउटपुट 33 होगा, क्योंकि 31 का जीसीडी और (3+1) 1 है। 32 और (3+2) का जीसीडी 1 है, और 33 का जीसीडी है और ( 3+3) 3 है।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
for initialize i := n, when i <= n + 2, update (increase i by 1), do: jml := 0 x := i while x > 0, do: jml := jml + x mod 10 x := x / 10 if gcd of i and jml is not equal to 1, then: return i return 0
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
int solve(int n) {
for (long i = n; i <= n + 2; i++) {
long jml = 0;
long x = i;
while (x > 0) {
jml += x % 10;
x /= 10;
}
if (__gcd(i, jml) != 1) {
return i;
}
}
return 0;
}
int main() {
int N = 31;
cout << solve(N) << endl;
} इनपुट
31
आउटपुट
33