上节我们说到,先凑出 37,再搞出 18,就能搞出 666。
那为什么是这两个数呢?
尝试把 666 质因数分解,得到666=2×32×37发现没?最后的答案 ans=46=(2+3+3+37)+1!
难道这仅是巧合吗?
我们再举几个例子。
18=2×32,ans18=2+3+3+1=963=7×9,ans63=7+9+1=1772=23×32,ans72=2+2+2+3+3+1=13现在你信了吧。
今有结论
若正整数 N=p1p2...pc,其中 p 是素数,则最少需要 (∑p)+1 次才能按出 N。
证明: 考虑数n=p1显然,我们只有 1 种方案按出 n,就是按 n 次 =,GT。
为什么我们没有第二种方案呢?
假设我们有第二种方案按出 n,而且它是先按出 x (1<x<n),再经过一波操作搞出 n。
那么,因为你已经搞出了 x,所以接下来的操作中,最小的加数也是 x。
换句话说,你没法再加比 x 更小的数了。
所以这样的话,x 必须满足x ∣ gcd(x,n)即x ∣ n因为 n 是素数,x<n,所以 x=1,矛盾!
这样我们就证明了,当 n 为素数时,有且只有一种方案,且 ans=n+1。
那如果 n′=p1p2 呢?
设我们先按出 x′ (1<x′<n),经过一波操作后得到 n′。因为 n′ 的因子只有 1,p1,p2,n,根据上面的证明,有 x′∈{p1,p2}。
当 x′=p1 时,需要按 ans1=p1+1 次(p1 次 = 和一次 GT)。
这样我们就得到 1 个 p1,而我们的目标是 p2 个 p1,所以我们还差 p2−1 个 p1,所以还需按下 p2−1 个 = 和一个 GT 一共 ans2=p2 次。
这样我们就证明了,当 n′ 为两素数乘积时,至少需要按下 (ans=ans1+ans2=p1+p2+1) 次。
那如果 N=p1p2...pc 呢?
同理。设 Nc=p1p2...pc。则N3=p1p2p3=N2p3按出 N2 需要 (p1+p2+1) 次,我们还差 p3−1 个 N2。同上理,按出 N3 需要 p1+p2+p3+1 次。
设按出 Na 需要 ansa 次。
因为Na=Na−1pa所以ansa=ansa−1+pa易知 ans1=p1+1,所以ansc=ansc−1+pc=ansc−2+pc−1+pc=...=ans1+p2+...+pc=(i=1∑cpi)+1
Q.E.D..