C++程式查詢最近的整數,其數字與其數字和的最大公約數大於1


假設我們有一個數字N。考慮一個正整數x的函式gcdSum(x),它是該整數與其數字和的最大公約數。我們必須找到最小的整數x >= n,使得gcdSum(x) > 1。

所以,如果輸入類似於N = 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

更新於: 2022年3月3日

165次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告