编程之美---阶乘末尾有几个"零"?(C#实现)

本文介绍了一个使用 C# 编写的简单示例程序,该程序通过两种不同的方法来计算阶乘结果中末尾零的数量,并演示了委托的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7.     class Program
  8.     {
  9.         delegate long DoMath(long num);
  10.         static void Main(string[] args)
  11.         {
  12.             Program p = new Program();
  13.             p.GetFactorial(26);
  14.             DoMath d = new DoMath(p.HowManyZero);      
  15.             d += p.HowManyZero2;
  16.             d(26);
  17.             Console.Read();
  18.         }
  19.         public long HowManyZero(long num)//第一种解法
  20.         {
  21.             long result = 0;
  22.             for (long i = 1; i <= num; i++)
  23.             {
  24.                 long j = i;
  25.                 while (j %5== 0)
  26.                 {
  27.                     result++;//检查每一个数可以分解因式出多少个5
  28.                     j /= 5;
  29.                 }
  30.             }
  31.             Console.WriteLine(result);
  32.             return result;
  33.         }
  34.         public long HowManyZero2(long num)//第二种
  35.         {
  36.             long ret = 0;
  37.             while (num!=0)
  38.             {
  39.                 ret += num / 5;//可以被5整除,然后是25、125、625......
  40.                num /= 5;
  41.             }
  42.             Console.WriteLine(ret);
  43.             return ret;
  44.         }
  45.         public decimal GetFactorial(long num)//获得阶乘
  46.         {
  47.             decimal ret = 1;
  48.             for (long i = 1; i <= num; i++)
  49.             {
  50.                 ret *= i;
  51.             }
  52.             Console.WriteLine(ret);
  53.             return ret;
  54.         }
  55.     }
  56. }

书上只标了2颗星,我怎么觉得这么费劲....
PS:decimal都算不到30的阶乘啊......

具体讲解书上有

顺便复习一下delegate~~~~~~~

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值