因数个数上界的估计
Posted whx1003
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了因数个数上界的估计相关的知识,希望对你有一定的参考价值。
最近做了很多有关整数因数分解的题,每次开因数数组时总是纠结于其大小。而网上比较好的成果(我能找到的)是对于整数 \(n\),其因数个数 \(r(n)<\sqrt{n}\),当 \(n>1260\),所以我通过推导和实验(其实是估计不下去了)稍微改善了成果。
记号 我们记正整数 \(n\) 的素因子个数(包含重复的)为 \(s(n)\),因子个数为 \(r(n)\)。
引理 \[s(n)\leq\log_2n,\forall n \in \mathbb{N*}\]
证明 不妨假定 \(n = \prod_{i=1}^m p_i^{k_i}\),其中 \(p_i\) 为互不相同的素数。我们有 \(p_i\geq 2\),则
\[\log_2 n=\log_2 \prod_{i=1}^m p_i^{k_i}\geq\log_2 \prod_{i=1}^m 2^{k_i}=\log_2 2^{\sum_{i=1}^m k_i}=\log_2 2^{s(n)}=s(n)\]
定理 \(r(n)\leq(\frac{\log_2n}{m}+1)^m\),其中 \(m\) 是一小于 \(\log_2n\) 的整数。
证明 设 \(n\) 有 \(m\) 个质因数,且每个质因数分别有 \(k_1,k_2,\cdots,k_m\) 个,有 \(\sum_{i=1}^m k_i = s(n)\leq\log_2n\)。则 \(r(n)=\prod_{i=1}^m (k_i+1)\),由几何-算术平均值不等式有
\[r(n)=\prod_{i=1}^m (k_i+1)\leq(\frac{\sum_{i=1}^m (k_i+1)}{m})^m=(\frac{s(n)}{m} + 1)^m\leq(\frac{\log_2n}{m} + 1)^m\]
而 \(f(x)=(\frac{a}{x}+1)^x\) 在 \(\mathbb{R*}\) 上是增函数,所以 \(m\) 越小这个估计就越小。看起来 \(m\) 的上界似乎没什么用,但事实上,由于我们对 \(s(n)\) 的估计很不精确,所以 \(m\) 并不一定是 \(n\) 的不同素因子个数。实验表明,\(m\) 的增长十分缓慢(大约是 \(\log\sqrt{n}\) 级别),取 \(m=3\) 时在 \(10^8\) 以下已经没有超过这个估计的反例了。
本文仅是给出了一个关于上界的粗略估计,没有严格的证明,希望能对读者有所帮助。
以上是关于因数个数上界的估计的主要内容,如果未能解决你的问题,请参考以下文章