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