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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP