问题描述:

给一个整数,请输出该数字阶乘的后缀0的个数,例如:
数字7,它的阶乘为5040,后面有一个0,则输出1;还有数字10,它的阶乘为3628800,后面有两个0,则输出2。

/*
功能:求一个整数的阶乘含有多少个0
如   5! = 120(1个0)
8! = 40320(1个0)
10! = 3628800(2个0)
15! = 1307674368000(3个0)
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
int sum(int n)
{
int c = 0;
while(n >= 5)
{
c += fun(n);
n--;
}
return c;
}
/*
功能:  求n是5的多少次幂
返回值:n是5的整数次幂(如i),则返回i;否则返回0
*/
int fun(int n)          // 返回n是5的多少次幂
{
int i = 0;
while(n >= 5)
{
if(n % 5 == 0)
{
n /= 5;
i++;
}
else
break;
}
return i;
}
int main()
{
int n = 30;
while(n >= 1)
{
printf("sum(%d) = %d\n", n, sum(n));
n--;
}
return 0;
}

编译运行:

[zcm@t #179]$make
gcc -g   -c -o a.o a.c
gcc -g -o a a.o -lm
[zcm@t #180]$./a
sum(30) = 7
sum(29) = 6
sum(28) = 6
sum(27) = 6
sum(26) = 6
sum(25) = 6
sum(24) = 4
sum(23) = 4
sum(22) = 4
sum(21) = 4
sum(20) = 4
sum(19) = 3
sum(18) = 3
sum(17) = 3
sum(16) = 3
sum(15) = 3
sum(14) = 2
sum(13) = 2
sum(12) = 2
sum(11) = 2
sum(10) = 2
sum(9) = 1
sum(8) = 1
sum(7) = 1
sum(6) = 1
sum(5) = 1
sum(4) = 0
sum(3) = 0
sum(2) = 0
sum(1) = 0
[zcm@t #181]$

网上一位牛人写了一个更加简洁的自算法,把我的sum()和fun()合并到了一个函数f(),如下:

int f(unsigned int n)
{
if (n < 5) {
return 0;
}
return n / 5 + f(n / 5);
}

求一个整数的阶乘结果中后缀0的个数相关推荐

  1. 一个整数的阶乘最后有多少个0

    问题: 一个整数的阶乘最后有多少个0 分析:整数N的阶乘 N!=1×2×3×4×5×6×··· ×N 我们可以对N!进行分解质因数 即  N!=2x ×3y ×5z×7w ·········· 其中能 ...

  2. 求组合数的算法 java,求一个整数的组合数算法(java)

    开始需求: 产生一堆数字. 然后我输入一值,这个值等于这些数中的一个,或是任意多个数的和.但只能是其中一种情况. 比如我输入8.这些数里面,可以直接有8. 也可以是1+2+5 的和,也可以是 1+7 ...

  3. Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加

    2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加 题目 题目描述 运行示例 题目槽点与破题 题目槽点 破题 如何提取数字 代码块 方法评价 题目 题目描述 2.6 ...

  4. C/C++求一个整数的二进制中1的个数

    求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 分析:这是一道很基本的考查位运算的面试题.包 ...

  5. 对一个正整数n,求出n!中末尾0的个数。

    对一个正整数n,求出n!中末尾0的个数. 输入 输入有若干行.每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000). 输出 对输入行中的每一个数据 ...

  6. 第六章第二题(求一个整数各位数字之和)(Sum the digits in an integer)

    *6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和.使用下面的方法头: public static int sumDigits(long n) 例如:sumDigits(234) ...

  7. c语言整型最大数,C语言:求一个短整型正整数中的最大数字

    C语言:求一个短整型正整数中的最大数字 关注:84  答案:5  手机版 解决时间 2021-01-16 02:17 提问者舊倳偂歡 2021-01-15 14:26 例如整数12354中的最大数字是 ...

  8. C++求一个整数的各位数字总和(附完整源码)

    C++求一个整数的各位数字总和算法 C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) int su ...

  9. Java黑皮书课后题第6章:*6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:public static int sumDigits(long n)

    6.2(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和.使用下面的方法头:public static int sumDigits(long n) 题目 题目概述 槽点 代码 运行示例 ...

最新文章

  1. Python进阶08 异常处理
  2. yolov4论文_YOLOv4论文详细解读
  3. 梦幻模拟战更新服务器正在维护,梦幻模拟战魔之启示录更新维护公告
  4. Python global文件的全局变量使用
  5. tcp,udp报文最大长度
  6. 浅谈android中的自定义封装易用的Dialog
  7. 无心剑随感《译诗但求达意传神》
  8. Linux内存管理 brk(),mmap()系统调用源码分析1:基础部分
  9. java 线程 寄存器 地址_Java高级进阶多线程学习之路(四)CPU与内存
  10. HTTP method POST is not supported by this URL解决方案
  11. session的概念特点及原理
  12. Google TPU的发展历程与思考(一)
  13. tensorboard 可视化 projector
  14. java那块最难_Java哪块最难学?
  15. RHY融获基金数字资产投资,海外扩建加速
  16. python求一组数的最大值_用python实现在一组数据中,寻找到最大数和最小数并输出最大数和最小数所在的位置...
  17. 数据库基础及常用SQL语句
  18. poj3281 Dining (最大流)
  19. 互联网快讯:微信上线“仅传输文件”新功能;极米RS Pro 2获用户肯定;网宿科技与奇安信达成战略合作
  20. 班级奖学金管理系统java_(奖学金评定管理系统设计)(最终版)

热门文章

  1. 步步为营:Asp.Net序列化Json格式的两种方法
  2. Anton Chuvakin:关于日志管理产品的十个注意事项
  3. K-Means聚类算法思想及实现
  4. 2075. 解码斜向换位密码
  5. Go语言实战 : API服务器 (8) 中间件
  6. Docker 入门(2)技术实现和核心组成
  7. git 代码推送流程_Git 101:一个让您开始推送代码的Git工作流程
  8. nodejs_NodeJS历险记
  9. mybatis中的多对一的查询
  10. AOJ 0525 Osenbei【穷竭搜索】