java实例 N的阶乘末尾有多少个0

java实例 N的阶乘末尾有多少个0,第1张

个数 N 的阶乘末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数, 而 2 的个数是远远多余 5 的个数的, 因此求出 5 的个数即可 题解中给出的求解因子 5 的个数的方法是用 n 不断除以 5, 直到结果为 0, 然后把中间得到的结果累加

扩展资料

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程  。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 [2]  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等

无语

public class jjjj {

int pp(int n)

{

if(n<2)

return 1n;

else

return npp(n-1);

}

public static void main(String args[])

{

jjjj b=new jjjj();

int d=bpp(5);

Systemoutprint(d);

}

}

阶乘就是利用递归啊。

整个程序的核心就是int pp(int n)

{

if(n<2)

return 1n;

else

return npp(n-1);

}

这一段, 如果n大于2,返回npp(n-1)的意思,就是,任何一个N的阶乘等于n比n小1的数的阶乘,打个比方,比如5的阶乘等于5(4的阶乘),4的阶乘等于4(3的阶乘),而1的阶乘,等于1本身。

import javautilScanner;

public class Test {

public static void printArr(int[] arr){

for(int i=0;i<arrlength;i++)

 Systemoutprint(arr[i]);

}

public static void printArrRev(int[] arr){

for(int i=arrlength-1;i>=0;i--)

 Systemoutprint(arr[i]);

}

public static int[] shift(int[] arr, int num){

int[] result = new int[arrlength+num];

for(int i=0;i<arrlength;i++){

result[i+num] = arr[i];

}

return result;

}

public static int getDigit(int num){

int result = 0;

int number = num;

while(number!=0){

number = number/10;

result++;

}

return result;

}

// public static int[] isopsephy(int[] arr){

// int iso_number = 0;

// int[] result;

// for(int i=arrlength-1;i>=0;i--){              

// iso_number = (arr[i]+iso_number)/10;

// }

// int digit = getDigit(iso_number);

// result = new int[arrlength+digit];

// for(int i=digit-1;i>=0;i--){

// result[i] = iso_number%10;

// iso_number = iso_number/10;

// }

// iso_number = 0;

// for(int i=arrlength-1;i>=0;i--){

// result[i+digit] = (arr[i]+iso_number)%10;

// iso_number = (arr[i]+iso_number)/10;

// }

// return result;

// }

// public static int[] isopsephy(int arr){

// int temp= arr;

// int[] result;

// int digit = getDigit(arr);

// result = new int[digit];

// for(int i=digit-1;i>=0;i--){

// result[i] = temp%10;

// temp = temp/10;

// }

// return result;

// }

public static int[] isopsephy(int[] arr){

int iso_number = 0;

int[] result;

for(int i=0;i<arrlength;i++){              

iso_number = (arr[i]+iso_number)/10;

}

int digit = getDigit(iso_number);

result = new int[arrlength+digit];

for(int i=0;i<digit;i++){

result[i+arrlength] = iso_number%10;

iso_number = iso_number/10;

}

iso_number = 0;

for(int i=0;i<arrlength;i++){

result[i] = (arr[i]+iso_number)%10;

iso_number = (arr[i]+iso_number)/10;

}

return result;

}

public static int[] isopsephy(int arr){

int temp= arr;

int[] result;

int digit = getDigit(arr);

result = new int[digit];

for(int i=0;i<digit;i++){

result[i] = temp%10;

temp = temp/10;

}

return result;

}

public static int[] add(int[] arr, int[] addnum){

int[] arr_short = isopsephy(arr);

int[] arr_long = isopsephy(addnum);

if(arr_shortlength>arr_longlength){

int[] temp;

temp = arr_short;

arr_short = arr_long;

arr_long = temp;

}

for(int i=0;i<arr_shortlength;i++){

arr_long[i] +=arr_short[i];

}

return isopsephy(arr_long);

}

public static int[] multi(int[] arr, int multiplier){

int[] result = new int[arrlength];

for(int i=0;i<arrlength;i++){

result[i] = arr[i]multiplier;

}

return isopsephy(result);

}

public static int[] getMult(int[] arr, int[] multipliers){

int[] result = new int[arrlength];

int[] first = isopsephy(arr);

int[] second = isopsephy(multipliers);

for(int i=0;i<secondlength;i++){

result = add(result,shift(multi(first, second[i]),i));

result = isopsephy(result);

}

return result;

}

public static void main(String[] args){

Scanner sca = new Scanner(Systemin);

Systemoutprintln("Please input n:");

int n = scanextInt();

int[] result = isopsephy(n);

for(int i=n-1;i>0;i--){

result = getMult(result, isopsephy(i));

}

printArrRev(result);

}

}

一开始写成数组从高位到低位了,注释掉了。

class Factorial{

private long sum;

Factorial(int x){

sum=1;

for(int n=1;n<=x;n++)

{

sum=n;

}

}

public static void main(String[] args){

Factorial obj=new Factorial(3);

Systemoutprintln("3的阶乘为:"+objsum);

}

}

以上就是关于java实例 N的阶乘末尾有多少个0全部的内容,包括:java实例 N的阶乘末尾有多少个0、java n的阶乘、java求n的阶乘,用数组做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9439468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存