今天做題遇到了一個大整數除法
題目如下:
兩個巨大素數(質數)的乘積
得到兩個巨大素數(質數)的乘積是簡單的事,但想從該乘積分解出這兩個巨大素數卻是國際數學界公認的質因數分解難題。這種單向的數學關係,是不對稱加密RSA算法的基本原理。 本題給出兩個大素數(128bit位)的乘積和其中一個素數,請你編程求出另一個素數。
輸入格式:
44022510695404470886511586569647292146578314354528108825807522926455663589709 (大素數的乘積) 189193782774204832019945226750213439577 (其中一個大素數)
輸出格式:
232684764001698545563067004009755869717 (另一個素數)
輸入樣例:
60883665878129858935918958333091530420746054622405737630613777684610994823161
271963475875372143777333694041058521413
輸出樣例:
223867067745633357281812540202957589797
…Java的大整數處理:
import java.math.*;
import java.util.*;
public class mainn {
public static void main(String []args)
{
Scanner input = new Scanner(System.in);
BigInteger a = input.nextBigInteger();
BigInteger b = input.nextBigInteger();
System.out.print(a.divide(b));
input.close();
}
}
很方便,不止有除法
,
BigInteger 大整數
BigDecimal 大浮點數
1.add(); 加法 a.add(b);
3.subtract(); 減法 a.subtract(b);
4.multiply(); 乘法 a.multiply(b);
5.divide(); 整除 a.divide(b)
6.remainder(); 取餘
7.pow(); a.pow(b)=a^b
8.gcd(); 最大公約數
9.abs(); 絕對值
10.negate(); 取反數