百度2020春季实习生笔试——最小公倍数与最大公约数

题目描述

度度熊请你找出两个数a,b,满足1 ≤ a, b ≤ n且lcm(a, b) - gcd(a, b)尽量大。输出最大的lcm(a, b) - gcd(a, b)。其中lcm(a, b)表示a和b的最小公倍数,gcd(a, b)表示a和b的最大公约数。

输入描述

一行一个数字n(2 ≤ n ≤ 10^9)

输出描述

一行一个数字表示最大的lcm(a, b) - gcd(a, b)

思路分析

要使lcm(a, b) - gcd(a, b)尽量大,应该让a和b的最小公倍数尽量大,a和b的最大公约数尽量小。当a、b分别取n -1 和 n时满足该条件:最小公倍数为两者乘积,最大公约数为1。

AC代码(C++)

#include<iostream>

using namespace std;

int main()
{
    long long int n;
    cin >> n;
    cout << n * (n - 1) - 1;
    return 0;
}
发布了47 篇原创文章 · 获赞 73 · 访问量 3804

猜你喜欢

转载自blog.csdn.net/whuhewei/article/details/105191679