首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 計算 1000! 大數階乘:BigInteger 完整實作與 JS 呼叫示範

     編輯:程式設計綜合問答

1000! 超出 long 範圍,必須使用 System.Numerics.BigInteger。題目要求 C# 方法供 JavaScript 呼叫並綁定 Label,典型架構為 ASP.NET WebForm / WebAPI + 前端 AJAX。

C# 階乘方法

using System;
using System.Numerics;

public class MathUtil
{
    public static BigInteger Factorial(int n)
    {
        if (n < 0) throw new ArgumentException("n must be non-negative");
        BigInteger result = 1;
        for (int i = 2; i <= n; i++) result *= i;
        return result;
    }
}

WebAPI 端點

[HttpGet]
[Route("api/math/factorial/{n}")]
public IHttpActionResult GetFactorial(int n)
{
    try {
        var result = MathUtil.Factorial(n);
        return Ok(result.ToString()); // 傳回字串避免 JSON 序列化截斷
    } catch (Exception ex) {
        return BadRequest(ex.Message);
    }
}

前端 JavaScript 呼叫並綁定 Label

async function loadFactorial() {
    try {
        const resp = await fetch('/api/math/factorial/1000');
        if (!resp.ok) throw new Error('Server error');
        const bigNumStr = await resp.text();
        document.getElementById('lblResult').innerText = bigNumStr;
    } catch (e) {
        console.error(e);
        document.getElementById('lblResult').innerText = '計算失敗';
    }
}
loadFactorial();

ASP.NET WebForm 後端綁定(若非 WebAPI)

// Code-behind
protected void Page_Load(object sender, EventArgs e) {
    if (!IsPostBack) {
        lblResult.Text = MathUtil.Factorial(1000).ToString();
    }
}

效能提示:1000! 約 2568 位數,BigInteger 乘法極快(毫秒級),無需快取。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved