黑马程序员技术交流社区

标题: 求一到1000的阶乘怎么弄,完全没思路 [打印本页]

作者: w261215    时间: 2015-12-23 13:39
标题: 求一到1000的阶乘怎么弄,完全没思路
求结果末尾有多少0.完全没思路
作者: Mr.zhao    时间: 2015-12-23 16:33
应该是算5,25,125,625的个数
作者: 李永佳    时间: 2015-12-23 17:13
看不懂你要问什么玩意儿???
作者: dg216888    时间: 2015-12-24 00:05
public class Demo2
{
        public static void main(String[] args)
        {
                int count = 0 ;
                for (int i = 1; i <= 1000; i++)
                {
                        if(i%10==0)
                        {
                                count++;
                                System.out.println(count);
                        }
                }
                System.out.println(count);
        }
}
作者: dg216888    时间: 2015-12-24 00:07
1-1000实在是太大了,所以,用for循环是不现实的,但是我们要找0的个数,可以知道,2*5=10;
我们找可以被10整除的数,然后再for循环中进行判断,就可以得到结果。
作者: dg216888    时间: 2015-12-24 00:08
public class Demo3
{
        public static void main(String[] args)
        {
                 //被2整除的次数之和
                 int count2 = 0;
                 //被5整除的次数之和
                 int count5 = 0;

                 //遍历所有的数
                 for (int number = 1; number <= 1000; number ++) {
                  int dynmicNumber = number;//该数的一个复制,用于不数的整除用
                  while (dynmicNumber % 2 == 0) { //统计该数能被2整除多少次,但是并不单独统计,而是统计到全局
                   count2++;
                   dynmicNumber /= 2;
                  }
                  while (dynmicNumber % 5 == 0) { //统计该数能被2整除多少次,但是并不单独统计,而是统计到全局
                   count5++;
                   dynmicNumber /= 5;
                  }
                 }

                 System.out.println("结尾0的个数为:" + Math.min(count2, count5));
        }
}

作者: dg216888    时间: 2015-12-24 00:09
第一个方法有缺陷,第二个是对的,不过思路是一样的
作者: dg216888    时间: 2015-12-24 00:11
刚开始想用比较简单的代码来执行,看来还是不行。
作者: 谢光智    时间: 2015-12-24 11:58
我来看看大神解答。
作者: foolishlovepig    时间: 2015-12-24 12:44
dg216888 发表于 2015-12-24 00:08
public class Demo3
{
        public static void main(String[] args)

大神,貌似题目是先求阶乘,然后求阶乘的结果能有几个0吧?
作者: lxg8136223    时间: 2015-12-24 12:51
        // 定义一个变量                 int count = 1 ;                                  // 循环                 for(int x = 2 ; x <= 5 ; x++){                         count *= x ;                 }                                  // 输出                 System.out.println(count);                
作者: dg216888    时间: 2015-12-27 23:16
foolishlovepig 发表于 2015-12-24 12:44
大神,貌似题目是先求阶乘,然后求阶乘的结果能有几个0吧?

不需要求出阶乘结果啊,首先阶乘的值太大了,而我们只需要求出能够得到0的两个数的乘积就好了啊
作者: ___    时间: 2015-12-27 23:23
阶乘是什么鬼
作者: 1158147908    时间: 2015-12-28 06:21
用for循环语句呀
作者: foolishlovepig    时间: 2015-12-28 09:42
dg216888 发表于 2015-12-27 23:16
不需要求出阶乘结果啊,首先阶乘的值太大了,而我们只需要求出能够得到0的两个数的乘积就好了啊 ...

啊啊,我看他帖子标题,以为一定要先求出阶乘呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2