已知:s_n= 1+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{n}s n =1+ 2 1 + 3 1 +…+ n 1 。显然对于任意一个整数 kk,当 nn 足够大的时候,s_n>ks n >k。 现给出一个整数 kk,要求计算出一个最小的 nn,使得 s_n>ks n >k。
时间: 2023-04-29 09:02:27 浏览: 169
输入n个整数,输出其中最小的k个
根据题意,我们需要找到一个最小的正整数 nn,使得 s_n>ks n >k。
我们可以先尝试计算一下前几个 s_n 的值:
s_1=1
s_2=1+1/2=1.5
s_3=1+1/2+1/3=1.8333...
s_4=1+1/2+1/3+1/4=2.0833...
可以发现,随着 n 的增大,s_n 的增长速度越来越慢,而且增长的幅度也越来越小。因此,我们可以猜测,当 n 足够大时,s_n 的增长速度会趋近于一个常数,即 s_n 的增长率会趋近于一个定值。
我们可以进一步验证这个猜测。根据调和级数的性质,我们知道:
s_n=1+1/2+1/3+...+1/n>ln(n)+γ
其中,γ≈.5772 是欧拉常数。因此,当 n 足够大时,s_n 的增长速度会趋近于 ln(n),即 s_n 的增长率会趋近于 1/n。
因此,我们可以设 s_n=k+ε,其中 ε> 很小。根据调和级数的性质,我们知道:
s_n=1+1/2+1/3+...+1/n<1+1/2+1/3+...+1/(k+1)+ln(n-k)+γ
因此,当 n 足够大时,我们有:
s_n<1+1/2+1/3+...+1/(k+1)+ln(n-k)+γ
s_n-k<1/2+1/3+...+1/(k+1)+ln(n-k)+γ
s_n-k-ln(n-k)-γ<1/2+1/3+...+1/(k+1)
因为右边的和式是一个调和级数的一部分,所以它是一个无穷级数,但是它是一个收敛的无穷级数。因此,我们可以找到一个足够大的正整数 n,使得左边的差值小于右边的和式,即:
s_n-k-ln(n-k)-γ<1/2+1/3+...+1/(k+1)<1
因此,我们可以得到:
s_n>k+ln(n-k)+γ
现在我们需要找到一个最小的正整数 n,使得上式成立。我们可以尝试将上式中的 ln(n-k) 替换成 ln(n),这样可以得到一个更简单的不等式:
s_n>k+ln(n)+γ
现在我们需要找到一个最小的正整数 n,使得上式成立。我们可以使用二分查找的方法来解决这个问题。具体来说,我们可以设定一个左边界 l 和一个右边界 r,然后每次取它们的中间值 m=(l+r)/2,计算 s_m 和 k+ln(m)+γ 的大小关系,然后根据大小关系来更新左边界或右边界,直到找到一个最小的正整数 n,使得 s_n>k+ln(n)+γ。
代码如下:
阅读全文