写出代码,计算最小自然数N,让从1到N的所有正整数之和大于S(运用while循环,N和S都是变量),并且打印结果。 例如,如果S=10, 那么 N=5 (1+2+3+4+5=15>10); 如果S=100, 那么N=14(1+2+3+。。。+14=105>100)
打印输出格式如下:
The sum of the first 14 positive integers is bigger than 100
写出代码,计算最小自然数N,让从1到N的所有正整数之和大于S(运用while循环,N和S都是变量),并且打印结果。 例如,如果S=10, 那么 N=5 (1+2+3+4+5=15>10); 如果S=100, 那么N=14(1+2+3+。。。+14=105>100)
打印输出格式如下:
The sum of the first 14 positive integers is bigger than 100
4 回答4.5k 阅读✓ 已解决
1 回答3.5k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答528 阅读✓ 已解决
1 回答4.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
我们可以试着列一个不等式
$$ \frac{(N+1)\times N}{2} > S $$
因为求的是最小正整数解,所以
$$ \frac{(N+1)\times N}{2} = S+1 $$
化简后得到
$$ N^2+N-(2\times S+1) = 0 $$
解一元二次方程,得
$$ N = \frac{-1 \pm \sqrt{1^2 + 4 \times 1\times(2\times S+1)}}{2} $$
$$ N = \frac{-1 \pm \sqrt{8\times S + 5}}{2} $$
因为最终求的是正整数,所以
$$ N = \lceil\frac{\sqrt{8\times S + 5} - 1}{2}\rceil $$
最终的代码是