分享

1~1000的累加乘 的积 后边有多少个零

 北斗烛龙 2014-09-26
  • /**
  • * 需求:求1到1000乘积的0的个数
  • * 思路:假设乘积结果是。。。。。000000000,每一个0就相当于乘与10,1到1000的乘积可以等同于将1到1000这些数字完全分解成质数再相乘
  • * 1=        1*1
  • * 2=        1*2
  • * 3=        1*3
  • * 4=        2*2
  • * 5=        1*5
  • * 6=        2*3
  • * 。
  • * 。
  • * 10=        2*5
  • * 11=        1*11
  • * 12=        2*3*4
  • * .
  • * .
  • * 15=        3*5
  • * .
  • * .
  • * 20=        2*2*5
  • * 。
  • *
  • * 25=        5*5。
  • *
  • * 1000=        2*2*2*5*5*5
  • * 就是将上面的等号右边的所有数乘起来。我们知道乘积中出现一个10,就会多一个0.而10=2*5,只有2和5乘积才能等于10,其他所有的数的乘积都不等于10。
  • * 不要说10*20也会有0,要知道我们已经将这些数字完全分解成了质数,所以只要求出上面等号右边能构造成多少个(2*5),明显可以看出2的个数多于5,所以
  • * 我们只要求出5的个数就是(2*5)的个数,也就是乘积中10的个数,也就是要求的0的个数。
  • * 怎么求5的个数,楼主的程序我也没看懂。不过我自己想了一种,大家看一下。
  • * 1.首先只要5的倍数,分解的质数里才会包含5,即
  • * 5 =        1*5
  • * 10=        2*5
  • * 15=         3*5
  • * 20=        4*5
  • * .    .
  • * .        .
  • * 1000=200*5
  • * 上面的等号右边我们直观的可以看到已经有200个5,再求1到200分解成5的倍数
  • *  5 =        1*5
  • * 10=        2*5
  • * 15=         3*5
  • * 20=        4*5
  • * .    .
  • * .        .
  • * 200=        40*5
  • * 上面上面又有40个5,再求出1到40分解成5的倍数
  • *  5 =        1*5
  • * 10=        2*5
  • * 15=         3*5
  • * 20=        4*5
  • * 。
  • * 40=        8*5
  • * 上面有8个5,再求1到8分解成5的倍数
  • * 5=        1*5
  • * 上面就1个5
  • * 所以5的个数=200+40+8+1=249
  • * 步骤:
  • *
  • * @author lhy
  • *
  • */
  • public class Test8
  • {
  •         public static void main(String[] args)
  •         {
  •                 int num=0;//创建变量记录5的个数
  •                 int z=1000;
  •                
  •                 while(z>=5){
  •                         num = z/5 +num;//第一次是200,第二次是40,第三次是8,其实都是除于5得到的
  •                         z = z/5;
  •                 }
  •                         System.out.print(num);
  •         }
  • }
    • 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多