题目描述
⼩ Y Y Y同学在学习数论之后灵机⼀动想出⼀个问题:请你找出两个数 a , b a,b a,b,满⾜ 1 ≤ a , b ≤ n 1≤a,b≤n 1≤a,b≤n且 l c m ( a , b ) − g c d ( a , b ) lcm(a,b)−gcd(a,b) lcm(a,b)−gcd(a,b)尽量⼤。输出最⼤的 l c m ( a , b ) − g c d ( a , b ) lcm(a,b)− gcd(a,b) lcm(a,b)−gcd(a,b)。
其中 g c d ( a , b ) gcd(a,b) gcd(a,b)表⽰ a a a和 b b b的的最⼤公约数, l c m ( a , b ) lcm(a,b) lcm(a,b)表⽰ a a a和 b b b的的最⼩公倍数。
思路
我们可以知道,最大的 l c m ( a , b ) − g c d ( a , b ) lcm(a,b)− gcd(a,b) lcm(a,b)−gcd(a,b)肯定是 n n n中最大的两个互质的数。这两个数很简单,一定是 n n n和 n − 1 n-1 n−1。
证明 n n n和 n − 1 n-1 n−1互质
反证法:
我们假设
n
n
n和
n
−
1
n-1
n−1不互质。
则
n
=
q
∗
m
,
n
−
1
=
w
∗
m
n=q*m,n-1=w*m
n=q∗m,n−1=w∗m,其中其中
q
,
w
q,w
q,w均为正整数,
w
<
q
w<q
w<q。
m
m
m为质数,则
m
>
1
m>1
m>1。
则
(
n
+
1
)
−
n
=
(
q
−
k
)
∗
m
>
=
m
>
1
(n+1)-n=(q-k)*m>=m>1
(n+1)−n=(q−k)∗m>=m>1
又因为
n
−
(
n
−
1
)
=
1
n-(n-1)=1
n−(n−1)=1
矛盾,所以假设不成立。
所以
n
n
n和
n
−
1
n-1
n−1互质。
代码
#include <bits/stdc++.h>
using namespace std;
long long n;
int main() {
scanf("%lld",&n);
printf("%lld",n*(n-1)-1);
}