java中怎么实现阶乘,如计算1~100的阶乘

Python035

java中怎么实现阶乘,如计算1~100的阶乘,第1张

使用BigInteger大容量运算类计算100的阶乘

一.一般算法(循环)

view plaincopy to clipboardprint?

public class Test {

public static void main(String[] args) {

int result = 1

for (int i = 1i <= 100i++) {

result *= i

}

System.out.println(result)

}

}

public class Test {

public static void main(String[] args) {

int result = 1

for (int i = 1i <= 100i++) {

result *= i

}

System.out.println(result)

}

}

输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double

二.使用BigInteger大容量运算类

view plaincopy to clipboardprint?

import java.math.BigInteger

public class Test {

public static void main(String[] args) {

BigInteger result = new BigInteger("1")//为result赋初始值,为1

for (int i = 1i <= 100i++) {

BigInteger num = new BigInteger(String.valueOf(i))

result = result.multiply(num)//调用自乘方法

}

System.out.println(result)//输出结果

System.out.println(String.valueOf(result).length())//输出长度

}

}

import java.math.BigInteger

public class Test {

public static void main(String[] args) {

BigInteger result = new BigInteger("1")//为result赋初始值,为1

for (int i = 1i <= 100i++) {

BigInteger num = new BigInteger(String.valueOf(i))

result = result.multiply(num)//调用自乘方法

}

System.out.println(result)//输出结果

System.out.println(String.valueOf(result).length())//输出长度

}

}

计算结果为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

产度:158

//早前写的,简易的!

import java.util.*

public class TestSum {

static Scanner sc = new Scanner(System.in)

public static void main(String[] args) {

while(true){

init()

}

}

private static void init() {

System.out.println("请输入算数表达式如:1+1回车即可:")

String str = sc.nextLine()

if (!str.matches("[^a-zA-Z()&^#$@!~]+")) {

System.out.println("输入错误重输:请输入算数表达式如:1+1回车即可:")

str = sc.nextLine()

}

int q = 0, h = 0, sum = 0

char chs = ' '

for (int i = 0 i < str.length() i++) {

chs = str.charAt(i)

if (chs == '+' || chs == '-' || chs == '*' || chs == '/') {

q = Integer.valueOf(str.substring(0, i))

h = Integer.valueOf(str.substring(i + 1, str.length()))

switch (chs) {

case '+':

sum = q + h

break

case '-':

sum = q - h

break

case '*':

sum = q * h

break

default:

sum = q / h

break

}

break

}

}

System.out.println("结果="+sum+"\n继续下一轮:")

}

}

lz  你好

这种纯粹是数学问题   搞清楚线代中矩阵乘积的过程   就能编出来

以下是我帮你写的代码

(

ps:有两个方法

multi()  用单个变量保存元素的值

multiInArray() 用数组保存元素的值  这种方式是为了你好懂乘积的过程

 运行结果都是一样的  只是保存方式

)

import java.util.*

public class ArrayMulti{

private int[][] _array = new int[3][3]

public void input(){

Scanner in = new Scanner(System.in)

System.out.println ("输入一个3*3的矩阵:")

for (int i = 0 i < 3 i++) {

for(int j = 0 j < 3 j++){

_array[i][j] = in.nextInt()

}

}

}

public void multi(){//变量形式

int index = 0//记录矩阵乘积的每一个元素

System.out.println ("该矩阵的乘积为:")

for (int k = 0 k < 3 k++) {

for(int i = 0 i < 3 i++){

for (int j = 0 j < 3 j++) {

index += _array[i][j] * _array[j][k]

}

System.out.printf ("%-4d",index)//输出每一个矩阵乘积的元素

index = 0//重新置0  进行下一个元素的计算

}

System.out.println ()//换行

}

}

/*public void multiInArray(){//数组形式

int[][] result = new int[3][3]

System.out.println ("该矩阵的乘积为:")

for (int k = 0 k < 3 k++) {

for(int i = 0 i < 3 i++){

for (int j = 0 j < 3 j++) {

result[i][k] += _array[i][j] * _array[j][k]

//计算每一个元素的值  这个其实就是线代中的公式 [i][j] * [j][k] --> [i][k]

}

}

}

for (int i = 0 i < 3 i++) {

for(int j = 0 j < 3 j++){

System.out.printf("%-4d",result[i][j])

}

System.out.println()

}

}*/

public static void main (String[] args) {

ArrayMulti am = new ArrayMulti()

am.input()

am.multi()//调用变量形式的方法

}

}

运行结果:

输入一个3*3的矩阵:

1 1 1

2 2 2

3 3 3

该矩阵的乘积为:

6   12  18

6   12  18

6   12  18

希望能帮助你哈