7-2 两个巨大素数(质数)的乘积 (10分)

本文探讨了如何使用Java中的BigInteger和BigDecimal类来处理非常大的素数乘积问题,即使面对极长的数字也能有效计算。

在这里插入图片描述
我一看到这么长的数就想起了工具类中的大整数类,但是又有点不自信,觉得可能大整数类也处理不了这么长的数,于是试了一下,发现用BigInteger 和BigDecimal类都可以处理

BigInteger类 大整数		long  -263次方 ~ 263次方-1	(该类型的变量存储超过long范围的整数,底层用数组存的每一位)
	1.所属的包java.math  需要import导入
	2.继承自Number   
	3.如何创建对象   提供的构造方法全部都是带参数的
		通常利用带String参数的构造方法创建这个类的对象
		BigInteger  bi = new BigInteger("123");	
	4.类中的常用方法
		做四则运算 
		add()   subtract()   multiply()   divide()	(参数和返回值的类型都是BigInteger类型)
	5.小例子   设计一个方法 用来计算给定数字的阶乘  5   1*2*3*4*5==120
		//设计一个方法  用来计算给定数字的阶乘
		//参数   返回值
		public BigInteger factorial(int num){
			BigInteger result = new BigInteger("1");
			for(int i=1;i<=num;i++){
				result = result.multiply(new BigInteger(i+""));
			}
			return result;
		}
	
	BigDecimal类    超过了double取值范围(底层也是用数组存每一位)
	1.所属的包  java.math包
	2.继承Number类
	3.通常也是可以通过 带String、int、double等等参数 构建对象
		BigDecimal bi = new BigDecimal("123");	
	4.类中的常用方法
		做四则运算 
		add()   subtract()   multiply()   divide()
		setScale();
		两个参数  前面是保留小数点之后的位数  后面参数是设置的模式(向上取整,还是向下取整等等模式)
		对象.setScale(2,BigDecimal.ROUND_DOWN);	(这个类型是向下取整)

官方文档里有很多方法,详细见官方文档

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        BigInteger a = new BigInteger(input.next());
        BigInteger b = new BigInteger(input.next());
        System.out.println(a.divide(b));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值