级数求和

题目描述
已知:S_n= 1+1/2+1/3+…+1/nSn​=1+1/2+1/3+…+1/n。显然对于任意一个整数KK,当nn足够大的时候,S_nSn​大于KK。
现给出一个整数KK(1 le k le 151≤k≤15),要求计算出一个最小的nn;使得S_n>KSn​>K。
输入输出格式
输入格式:
一个正整数KK
输出格式:
一个正整数NN
这道题目思路不难 主要是细节 一开始把代码写出来了 一直没法输出结果 看了网上的解法 才恍然大悟

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int k = input.nextInt();
        double sn=0;
        int i=0;
        while (sn < k) {
            i++;
            sn=(double)1/i+sn; 
        }
//一开始是下面种解法 把我坑惨了 参考上面
         //int i=1;
         //while (sn < k) {
         // sn==1/i+sn;
         //i++; 
        //}
        System.out.println(i);
    }
}
原文地址:https://www.cnblogs.com/cznczai/p/11149636.html