三九宝宝网宝宝教育教学论文

c语言中怎么得到任意整数的阶乘末尾的0的个数

01月02日 编辑 39baobao.com

[被除数、除数末尾有0的除法的案例]王玉玲 ]以下是两节有关情境创设的两节课,教学内容一样,但处理情境创设的方法截然不同,下面是两节课的教学片断[案例]片段一情境创设。师:同学们喜欢去商店买东西吧,生:喜欢,师:今天...+阅读

iamxujian的已经不错了,如果把long 改成unsigned __int64支持的范围能更大

恩恩,程序差不多了 ,我就给你说下这个算法的原理:

如果想在末尾凑成个0 那么就相当于乘以个10 而10可以分解为2x5

所以说只要把N!因子2的个数和5的个数计算出来,取少的就是结果

因为在1 2 .....N中 偶数的个数肯定比5的倍数多,所以只要求出N!最多可以表示为5的多少次方。。。就是答案

首先找到1 2 .....N中可以被一个5整除的数的个数,是N/5,存到ret里

然后再找1 2 .....N中可以被25整除数的个数,是N/25,加到ret里(除以25是因为序列里可能存在25的倍数,而上一步只统计了5的倍数,这样就会漏掉一些5)

然后再找1 2 .....N中可以被125整除数的个数,是N/125,加到ret里(除以125是因为序列里可能存在125的倍数,而上一步只统计了25的倍数,这样就会漏掉一些5)

...

.

.

直到five大于N,循环结束,

返回的ret就是结果

以下为关联文档:

用汇编编写5的阶乘的程序;汇编语言实现计算SUM=5! DATAS SEGMENT ;此处输入数据段代码 NUM DW 5 ;最高阶数 SUN DW 0 ;计算结果 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGME...

减乘除阶乘平方立方平方根系统的的汇编程序!你的问题也太多了吧,我这个学期学习微机原理,编了进制之间的转换程序,现在给你参考下吧,不过我想其他的程序你应该参考书来做一下,试试一定可以的!;Binary to Hex;二进制向十六进制...

C语言中求阶乘的累加#include main() { int a; double b=1,c=1,d=0; printf("\nplease input a number\n"); scanf("%d",&a); for(;b就是说你输入3的话,只有1*2,应该是1*2*3,其他没任何问题*/ { c=c*b;...

怎么用C语言编写100以内任意整数的阶乘int n; int r[600]={0}; int count(n) { int i; for(i=0;i<600;i++) r[i]*=n; for(i=599;i>0;i--) { r[i-1]=r[i-1]+r[i]/10; r[i]=r[i]%10; } } int main() { int i; int r...

推荐阅读
图文推荐