当前位置: 首页 > news >正文

56、php实现N的阶乘末尾有多个0

题目: php实现N的阶乘末尾有多个0

描述:
阶乘
N! = 123*…N;
比如 5! = 12345 = 120 末端有1个0
解题思路:
N! = K*(10^M)
N的阶乘为K和10的M次方的乘积,那么N!末尾就有M个0。如果将N的阶乘分解后,那么N的阶乘可以分解为: 2的X次方,3的Y次方,4的Z次方,…的乘积。
由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,
于是M = MIN( X,Z),不难看出X大于Z,
因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z
所以我们求解N的阶乘最后的0.相当于求解里面有多个5的因子

当我们遇到一大问题可以拆成一个个小的问题,来求解。

 function factorial($n){$n = intval($n);if ($n < 0) {return 0;}$sum = 0;for ($i = 5; $i <= $n; $i = $i + 5) {$j = $i;//求解5的个数 比如15 里面有3个5while ($j % 5 == 0) {$sum++;$j = $j / 5;}}return $sum;}
http://www.lryc.cn/news/413559.html

相关文章:

  • 混合域注意力机制(空间+通道)
  • springboot长春旅游安全地图平台-计算机毕业设计源码90075
  • apex正则表达式匹配富文本字段内容,如何只匹配文本而忽略富文本符号
  • 空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受
  • vue的nextTick是下一次事件循环吗
  • 5.4.软件工程-系统设计
  • Apache Kylin与BI工具集成:数据可视化实战
  • 通过idea图形化界面就能push到github流程
  • C语言初阶(10)
  • Javaweb用过滤器写防跳墙功能和退出登录
  • 小试牛刀-Telebot区块链游戏机器人(TS升级)
  • MySQL:Prepared Statement 预处理语句
  • Java:Thread类以及线程状态
  • 如何通过前端表格控件实现自动化报表?
  • Upload-labs靶场Pass01-Pass21全解
  • 使用openpyxl库对Excel数据有效性验证
  • 【算法】浅析深度优先搜索算法
  • 鸿蒙系统开发【ASN.1密文转换】安全
  • 【期末复习】软件质量保证与测试
  • CTFHub——XSS——反射型
  • docker 部署 libreoffice
  • 预测各种开发语言的市场占比
  • mybatisplus 通用字段自动赋值与更新
  • 图像生成中图像质量评估指标—FID介绍
  • uniapp全局分享功能实现方法(依赖小程序右上角的分享按钮)
  • Redis中BigKey的判定查找建议
  • Swift-语法基础
  • 面向对象进阶:多态、内部类、常用API
  • 寸(英寸)、码、斤、公顷等日常中大概的换算单位你清楚吗
  • Python面试宝典第26题:最长公共子序列