对于给定的正整数 N,我们需要选择一个严格小于 N 的正整数 M,使得 (N+M)×G(N,M) 最大,其中 G(N,M) 表示 N 与 M 的最大公约数。
关键观察:设 g=G(N,M),则 g 一定是 N 的某个大于 1 的因数时才有可能获得比 g=1 更大的值。若 g=1,最优的 M=N−1,此时结果为 2N−1。因此,我们可以把 2N−1 作为一个初始的候选答案。
算法步骤:
小智获得了一个正整数 N,他需要从严格小于 N 的正整数中挑选一个数 M,使得表达式 (N+M)×G(N,M) 的结果尽可能大。
这里 G(a,b) 表示 a 与 b 的最大公因子,即能同时整除 a 和 b 的最大正整数。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册