春风博客

春天里,百花香...

导航

<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

统计

公告

MAIL: junglesong@gmail.com
MSN: junglesong_5@hotmail.com

Locations of visitors to this page

常用链接

留言簿(11)

随笔分类(224)

随笔档案(126)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

求阶乘数中尾后零的个数

主要是利用了10=2*5,一个数中5的因子个数必定比2的因子个数少的原理。

代码如下:

package com.sitinspring;

/**
 * 求阶乘数中尾后零的个数
 * 如10!的尾后零的个数为2
 * 
@author sitinspring(junglesong@gmail.com)
 * 
@since 2008-6-10 上午11:57:45
 * @vsersion 1.00 创建 sitinspring 2008-6-10 上午11:57:45
 
*/

public class PowerZeroCount{
    
public static void main(String[] args){
        
int sum=0;
        
for(int i=1;i<=100;i++){
            
int count=getDivisorCount(i,5);
            sum
+=count;
        }

        
        System.out.println(
"100阶乘尾后0的个数为:"+sum);
    }

    
    
/**
     * 取得除数在被除数中的可整除次数,如5在25中的可整除个数为2
     * 
@param Dividend 被除数
     * 
@param divisor 除数
     * 
@return
     
*/

    
public static int getDivisorCount(int Dividend,int divisor){
        
if(Dividend==0){
            
return 0;
        }

        
        
int count=0;
        
        
if(Dividend % divisor==0){
            count
=1;
            count
+=getDivisorCount(Dividend/divisor,divisor);
        }

        
        
return count;
    }

    
    
/**
     * 求某数阶乘,但很快会溢出,扩大int为long也很快会溢出,放在这里只是做个演示
     * 
@param n
     * 
@return
     
*/

    
public static int power(int n){
        
if(n<=1){
            
return 1;
        }

        
else{
            
return n*power(n-1);
        }

    }

}

输出:
100阶乘尾后0的个数为:24

posted on 2008-06-10 12:14 sitinspring 阅读(618) 评论(0)  编辑  收藏 所属分类: 算法数据结构


只有注册用户登录后才能发表评论。


网站导航:
 
sitinspring(http://www.blogjava.net)原创,转载请注明出处.