100的阶乘末尾有多少个零!急求程序!

Python022

100的阶乘末尾有多少个零!急求程序!,第1张

//100!的尾数有多少个零?

//?

//*问题分析与算法设计可以设想:先求出100!的值,然后数一下末尾有多少个零。事实上,与上题一样,由于计算机所能表示的整

//数范围有限,这是不可能的。 为了解决这个问题,必须首先从数学上分析在100!结果值的末尾产生零的条件。不难看出:一个整

//数若含有一个因子5,则必然会在求100!时产生一个零。因此问题转化为求1到100这100个整数中包含了多少个因子5。若整数N能被25整

//除,则N包含2个因子5;若整数N能被5整除,则N包含1个因子5。*程序说明与注释

#include<stdio.h>

int main()

{

int a,count =0

for(a=5a<=100a+=5) //循环从5开始,以5的倍数为步长,考察整数

{++count

//若为5的倍数,计数器加1

if(!(a%25))

++count//若为25的倍数,计数器再加1

}

printf("The number of 0 in the end of 100! is: %d.\n",count)//打印结果return 0

}

long i = 1

long j =1

while(i<=100){

j = j * i

i++

}

System.out.print(j)

j是最终结果。

定义为long double仍然会溢出,因为在32位系统下long double仍然只有32位,下面即可:

#include <stdio.h>

int n

int r[600]={0}

int count(n)

{

int i

for(i=0i<600i++)

r[i]*=n

for(i=599i>0i--)

{

r[i-1]=r[i-1]+r[i]/10

r[i]=r[i]%10

}

}

int main()

{

int i

int reach=0

r[599]=1

scanf("%d",&n)

for(i=1i<=ni++)

count(i)

for(i=0i<600i++)

{if(r[i]) reach=1

if(r[i]||reach) printf("%d",r[i])

}

getchar()

getchar()

}