Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的代码显示的阶乘输出错误 class测试类{ 公共静态void main(字符串args[])引发异常{ 长n=1; 长ans=1; 扫描仪s=新的扫描仪(System.in); 长N=s.nextInt(); 长M=100000007; 对于(inti=1;i_Java - Fatal编程技术网

Java 我的代码显示的阶乘输出错误 class测试类{ 公共静态void main(字符串args[])引发异常{ 长n=1; 长ans=1; 扫描仪s=新的扫描仪(System.in); 长N=s.nextInt(); 长M=100000007; 对于(inti=1;i

Java 我的代码显示的阶乘输出错误 class测试类{ 公共静态void main(字符串args[])引发异常{ 长n=1; 长ans=1; 扫描仪s=新的扫描仪(System.in); 长N=s.nextInt(); 长M=100000007; 对于(inti=1;i,java,Java,它基本上取决于进行模块化操作时使用的数字M。尝试增加M,如long M=1000000000007l,将生成更有效的阶乘。您的long M=100000007;有问题。(对于较窄的类型,这是否是对旧的C方法的一种倒退?)实际上,100000007的倍数将被减去,以将大于或等于该值的数字拉回到范围内:其结果将是无意义的 不要那样做。依靠Java作为最后手段为您提供帮助 然后只需采用long类型的规则之一:因为long的范围在Java中是固定的,所以您可以使用该类型计算的最大阶乘数也是固定的,正好是

它基本上取决于进行模块化操作时使用的数字M。尝试增加M,如long M=1000000000007l,将生成更有效的阶乘。

您的
long M=100000007;
有问题。(对于较窄的类型,这是否是对旧的C方法的一种倒退?)实际上,
100000007
的倍数将被减去,以将大于或等于该值的数字拉回到范围内:其结果将是无意义的

不要那样做。依靠Java作为最后手段为您提供帮助

然后只需采用
long
类型的规则之一:因为
long
的范围在Java中是固定的,所以您可以使用该类型计算的最大阶乘数也是固定的,正好是
20!

class TestClass {

    public static void main(String args[] ) throws Exception {

        long n = 1;
        long ans = 1;
        Scanner s = new Scanner(System.in);
        long N = s.nextInt();
        long M = 1000000007;

        for (int i=1; i<=N; i++) {
            ans = (ans*i) % M;
        }
        System.out.println(ans);
    }
}

执行此操作并完全删除
M

显示输入、输出和预期输出。顺便说一句:阅读Java Naminc约定。变量名称应以小写字母开头为什么有
%M
(实际上为什么有
M
)?@ElliottFrisch某种形式的溢出保护尝试@Elliott FrischLike什么输入输出错误?事实上,12!是适合此过滤器的最后一个值。
12!:479001600&13!:6227020800
。当然,对于
N>=20
if (N > 20){
    /*an overflow will occur so inform the user of your program*/
}