计算器趣题(二)

上节我们说到,先凑出 3737,再搞出 1818,就能搞出 666666
那为什么是这两个数呢?

尝试把 666666 质因数分解,得到666=2×32×37666=2\times3^2\times37发现没?最后的答案 ans=46=(2+3+3+37)+1ans=46=(2+3+3+37)+1
难道这仅是巧合吗?
我们再举几个例子。
18=2×32,ans18=2+3+3+1=918=2\times3^2,ans_{18}=2+3+3+1=963=7×9,ans63=7+9+1=1763=7\times9,ans_{63}=7+9+1=1772=23×32,ans72=2+2+2+3+3+1=1372=2^3\times3^2,ans_{72}=2+2+2+3+3+1=13现在你信了吧。

今有结论
\quad若正整数 N=p1p2...pcN=p_1p_2...p_c,其中 pp 是素数,则最少需要 (p)+1(\sum{p})+1 次才能按出 NN

证明: 考虑数n=p1n=p_1显然,我们只有 11 种方案按出 nn,就是按 nn=GT

为什么我们没有第二种方案呢?
假设我们有第二种方案按出 nn,而且它是先按出 x (1<x<n)x\ (1<x<n),再经过一波操作搞出 nn
那么,因为你已经搞出了 xx,所以接下来的操作中,最小的加数也是 xx
换句话说,你没法再加比 xx 更小的数了。
所以这样的话,xx 必须满足x  gcd(x,n)x\ |\ \gcd(x,n)x  nx\ |\ n因为 nn 是素数,x<nx<n,所以 x=1x=1,矛盾!

这样我们就证明了,当 nn 为素数时,有且只有一种方案,且 ans=n+1ans=n+1


那如果 n=p1p2n'=p_1p_2 呢?

设我们先按出 x (1<x<n)x'\ (1<x'<n),经过一波操作后得到 nn'。因为 nn' 的因子只有 1,p1,p2,n1,p_1,p_2,n,根据上面的证明,有 x{p1,p2}x'\in\{p_1,p_2\}

x=p1x'=p_1 时,需要按 ans1=p1+1ans_1=p_1+1 次(p1p_1= 和一次 GT)。
这样我们就得到 11p1p_1,而我们的目标是 p2p_2p1p_1,所以我们还差 p21p_2-1p1p_1,所以还需按下 p21p_2-1= 和一个 GT 一共 ans2=p2ans_2=p_2 次。

这样我们就证明了,当 nn' 为两素数乘积时,至少需要按下 (ans=ans1+ans2=p1+p2+1)(ans=ans_1+ans_2=p_1+p_2+1) 次。


那如果 N=p1p2...pcN=p_1p_2...p_c 呢?
同理。设 Nc=p1p2...pcN_c=p_1p_2...p_c。则N3=p1p2p3=N2p3N_3=p_1p_2p_3=N_2p_3按出 N2N_2 需要 (p1+p2+1)(p_1+p_2+1) 次,我们还差 p31p_3-1N2N_2。同上理,按出 N3N_3 需要 p1+p2+p3+1p_1+p_2+p_3+1 次。

设按出 NaN_a 需要 ansaans_a 次。
因为Na=Na1paN_a=N_{a-1}p_a所以ansa=ansa1+paans_a=ans_{a-1}+p_a易知 ans1=p1+1ans_1=p_1+1,所以ansc=ansc1+pc=ansc2+pc1+pc=...=ans1+p2+...+pc=(i=1cpi)+1\begin{aligned}ans_c&=ans_{c-1}+p_c\\ &=ans_{c-2}+p_{c-1}+p_c\\ &=...\\ &=ans_1+p_2+...+p_c\\ &=(\sum_{i=1}^{c}p_i)+1 \end{aligned}
Q.E.D..\text{Q.E.D..}

posted @ 2019-04-23 09:24  TeacherDai  阅读(305)  评论(0)    收藏  举报