zoukankan      html  css  js  c++  java
  • BigInteger用在循环

    比如要写如下4个函数

    1.SUM(n) = 1 + 2 + 3+ … + n-1 + n]

    2.SUM1(n) = 1 + (1+2) + (1+ 2+ 3) + … (1 + 2 + 3 + … +n-1+n)

    3.FACT(n) = 1*2*3* . . . *(n-1) * n 

    4.FACT_SUM(n) = 1 + 1*2 + 1*2*3 + … + 1*2*3* . . . *(n-1) * n

    用long连100都过不了,无比无比的长的数字,试一试BigInteger,第一次写在循环里面,有点不习惯

    上代码

    import java.io.BufferedInputStream;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class test {
        public static BigInteger sum(BigInteger n) {
            return n.multiply(n.add(BigInteger.ONE)).divide(new BigInteger("2"));
        }
    
        public static BigInteger sum1(BigInteger n) {
            BigInteger sum = BigInteger.ZERO;
            BigInteger sum1 = BigInteger.ZERO;
            n = n.add(BigInteger.ONE);
            for (BigInteger i = BigInteger.ONE; i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
                sum = sum.add(i);
                sum1 = sum1.add(sum);
            }
            return sum1;
        }
    
        public static BigInteger fact(BigInteger n) {
            BigInteger mul = BigInteger.ONE;
            n = n.add(BigInteger.ONE);
            for (BigInteger i = new BigInteger("2"); i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
                mul = mul.multiply(i);
            }
            return mul;
        }
    
        public static BigInteger fact1(BigInteger n) {
            BigInteger sum = BigInteger.ONE, mul = BigInteger.ONE;
            n = n.add(BigInteger.ONE);
            for (BigInteger i = new BigInteger("2"); i.compareTo(n) < 0; i = i.add(BigInteger.ONE)) {
                mul = mul.multiply(i);
                sum = sum.add(mul);
            }
            return sum;
        }
    
        public static void main(String[] args) {
            Scanner cin = new Scanner(new BufferedInputStream(System.in));
            BigInteger big = new BigInteger(cin.next());
            cin.close();
            System.out.println(sum(big));
            System.out.println(sum1(big));
            System.out.println(fact(big));
            System.out.println(fact1(big));
        }
    }


    ========================================Talk is cheap, show me the code=======================================

    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    webBrowser控制新窗口
    MSIL指令速 查表
    [转载]最新.NET Reactor v4.0.0.0 注册机
    如何得到webbrowser的句柄
    【C#】获取本地Cookie的问题
    visio 2007 简体中文版下载
    VMware Workstation(虚拟机) V6.0.2 Build 59824 汉化版 |
    ComponentOne Studio Enterprise 2010 v1
    [转载]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密)
    用WPF实现打印及打印预览
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179771.html
Copyright © 2011-2022 走看看