最近在网上看到一个这样的算法...
就写了出来...
n! 末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数。又因为 2 的个数远远多于 5 的个数,所以只要求出这当中 5 的个数即可。不断地用 n 除以 5,直到结果为 0,将中间的结果都加起来,即可得到因子 5 的个数。例如,100/5 = 20,20/5 = 4,4/5 = 0。因此,1 到 100 中因子 5 的个数为 (20 + 4) = 24 个,亦即 100! 末尾有 24 个 0。
#include <iostream>
using namespace std;
int getcout(int value)
{
int cnt = 0 ;
while (value /= 5)
{
cnt += value;
}
return cnt;
}
int main(int argc,char **argv)
{
if(argc != 2)
{
cout<<"error"<<endl;
return 1;
}
int i = atoi (argv[1]);
cout<<"the result :"<<getcout(i)<<endl;
return 0;
}
如果有不对的地方...请指出来呀....