⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 montgomeryparams.java

📁 factorization.zip
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				    MaxUInt;
			      Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
				    MaxUInt;
			      Prod5 = ( (Pr >> 32) + Prod5 - TestNbr5) &
				    MaxUInt;
			}
			Prod[0] = Prod0;
			Prod[1] = Prod1;
			Prod[2] = Prod2;
			Prod[3] = Prod3;
			Prod[4] = Prod4;
			Prod[5] = Prod5;
			break;

		  case 7:
			Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
			      0;
			TestNbr2 = TestNbr[2];
			TestNbr3 = TestNbr[3];
			TestNbr4 = TestNbr[4];
			TestNbr5 = TestNbr[5];
			TestNbr6 = TestNbr[6];
			Nbr2_2 = Nbr2[2];
			Nbr2_3 = Nbr2[3];
			Nbr2_4 = Nbr2[4];
			Nbr2_5 = Nbr2[5];
			Nbr2_6 = Nbr2[6];
			i = 0;
			do {
			      ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
			      MontDig = ( (int) ProdB0 * montyMultN) &
				    MaxUInt;
			      Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
			      Prod0 = (Pr =
				       ( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
				       MontDig * TestNbr1 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
			      Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
			      Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
			      Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
			      Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
			      Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prod6 = (Prd >>> 32) + (Pr >>> 32);
			      i++;
			}
			while (i < 7);
			if (Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
			    (Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
			     (Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
			      (Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
			       (Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
				(Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
				 (Prod0 >= TestNbr0))))))) {
			      Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
			      Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
				    MaxUInt;
			      Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
				    MaxUInt;
			      Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
				    MaxUInt;
			      Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
				    MaxUInt;
			      Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
				    MaxUInt;
			      Prod6 = ( (Pr >> 32) + Prod6 - TestNbr6) &
				    MaxUInt;
			}
			Prod[0] = Prod0;
			Prod[1] = Prod1;
			Prod[2] = Prod2;
			Prod[3] = Prod3;
			Prod[4] = Prod4;
			Prod[5] = Prod5;
			Prod[6] = Prod6;
			break;

		  case 8:
			Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
			      Prod7 = 0;
			TestNbr2 = TestNbr[2];
			TestNbr3 = TestNbr[3];
			TestNbr4 = TestNbr[4];
			TestNbr5 = TestNbr[5];
			TestNbr6 = TestNbr[6];
			TestNbr7 = TestNbr[7];
			Nbr2_2 = Nbr2[2];
			Nbr2_3 = Nbr2[3];
			Nbr2_4 = Nbr2[4];
			Nbr2_5 = Nbr2[5];
			Nbr2_6 = Nbr2[6];
			Nbr2_7 = Nbr2[7];
			i = 0;
			do {
			      ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
			      MontDig = ( (int) ProdB0 * montyMultN) &
				    MaxUInt;
			      Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
			      Prod0 = (Pr =
				       ( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
				       MontDig * TestNbr1 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
			      Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
			      Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
			      Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
			      Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
			      Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_7 + Prod7;
			      Prod6 = (Pr = (Pr >>> 32) + MontDig * TestNbr7 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prod7 = (Prd >>> 32) + (Pr >>> 32);
			      i++;
			}
			while (i < 8);
			if (Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
			    (Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
			     (Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
			      (Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
			       (Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
				(Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
				 (Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
                                  (Prod0 >= TestNbr0)))))))) {
			      Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
			      Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
				    MaxUInt;
			      Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
				    MaxUInt;
			      Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
				    MaxUInt;
			      Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
				    MaxUInt;
			      Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
				    MaxUInt;
			      Prod6 = (Pr = (Pr >> 32) + Prod6 - TestNbr6) &
				    MaxUInt;
			      Prod7 = ( (Pr >> 32) + Prod7 - TestNbr7) &
				    MaxUInt;
			}
			Prod[0] = Prod0;
			Prod[1] = Prod1;
			Prod[2] = Prod2;
			Prod[3] = Prod3;
			Prod[4] = Prod4;
			Prod[5] = Prod5;
			Prod[6] = Prod6;
			Prod[7] = Prod7;
			break;

		  case 9:
			Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
			      Prod7 =
			      Prod8 = 0;
			TestNbr2 = TestNbr[2];
			TestNbr3 = TestNbr[3];
			TestNbr4 = TestNbr[4];
			TestNbr5 = TestNbr[5];
			TestNbr6 = TestNbr[6];
			TestNbr7 = TestNbr[7];
			TestNbr8 = TestNbr[8];
			Nbr2_2 = Nbr2[2];
			Nbr2_3 = Nbr2[3];
			Nbr2_4 = Nbr2[4];
			Nbr2_5 = Nbr2[5];
			Nbr2_6 = Nbr2[6];
			Nbr2_7 = Nbr2[7];
			Nbr2_8 = Nbr2[8];
			i = 0;
			do {
			      ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
			      MontDig = ( (int) ProdB0 * montyMultN) &
				    MaxUInt;
			      Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
			      Prod0 = (Pr =
				       ( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
				       MontDig * TestNbr1 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
			      Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
			      Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
			      Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
			      Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_6 + Prod6;
			      Prod5 = (Pr = (Pr >>> 32) + MontDig * TestNbr6 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_7 + Prod7;
			      Prod6 = (Pr = (Pr >>> 32) + MontDig * TestNbr7 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_8 + Prod8;
			      Prod7 = (Pr = (Pr >>> 32) + MontDig * TestNbr8 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prod8 = (Prd >>> 32) + (Pr >>> 32);
			      i++;
			}
			while (i < 9);
			if (Prod8 > TestNbr8 || Prod8 == TestNbr8 &&
			    (Prod7 > TestNbr7 || Prod7 == TestNbr7 &&
			     (Prod6 > TestNbr6 || Prod6 == TestNbr6 &&
			      (Prod5 > TestNbr5 || Prod5 == TestNbr5 &&
			       (Prod4 > TestNbr4 || Prod4 == TestNbr4 &&
				(Prod3 > TestNbr3 || Prod3 == TestNbr3 &&
				 (Prod2 > TestNbr2 || Prod2 == TestNbr2 &&
				  (Prod1 > TestNbr1 || Prod1 == TestNbr1 &&
				   (Prod0 >= TestNbr0))))))))) {
			      Prod0 = (Pr = Prod0 - TestNbr0) & MaxUInt;
			      Prod1 = (Pr = (Pr >> 32) + Prod1 - TestNbr1) &
				    MaxUInt;
			      Prod2 = (Pr = (Pr >> 32) + Prod2 - TestNbr2) &
				    MaxUInt;
			      Prod3 = (Pr = (Pr >> 32) + Prod3 - TestNbr3) &
				    MaxUInt;
			      Prod4 = (Pr = (Pr >> 32) + Prod4 - TestNbr4) &
				    MaxUInt;
			      Prod5 = (Pr = (Pr >> 32) + Prod5 - TestNbr5) &
				    MaxUInt;
			      Prod6 = (Pr = (Pr >> 32) + Prod6 - TestNbr6) &
				    MaxUInt;
			      Prod7 = (Pr = (Pr >> 32) + Prod7 - TestNbr7) &
				    MaxUInt;
			      Prod8 = ( (Pr >> 32) + Prod8 - TestNbr8) &
				    MaxUInt;
			}
			Prod[0] = Prod0;
			Prod[1] = Prod1;
			Prod[2] = Prod2;
			Prod[3] = Prod3;
			Prod[4] = Prod4;
			Prod[5] = Prod5;
			Prod[6] = Prod6;
			Prod[7] = Prod7;
			Prod[8] = Prod8;
			break;

		  case 10:
			Prod0 = Prod1 = Prod2 = Prod3 = Prod4 = Prod5 = Prod6 =
			      Prod7 =
			      Prod8 = Prod9 = 0;
			TestNbr2 = TestNbr[2];
			TestNbr3 = TestNbr[3];
			TestNbr4 = TestNbr[4];
			TestNbr5 = TestNbr[5];
			TestNbr6 = TestNbr[6];
			TestNbr7 = TestNbr[7];
			TestNbr8 = TestNbr[8];
			TestNbr9 = TestNbr[9];
			Nbr2_2 = Nbr2[2];
			Nbr2_3 = Nbr2[3];
			Nbr2_4 = Nbr2[4];
			Nbr2_5 = Nbr2[5];
			Nbr2_6 = Nbr2[6];
			Nbr2_7 = Nbr2[7];
			Nbr2_8 = Nbr2[8];
			Nbr2_9 = Nbr2[9];
			i = 0;
			do {
			      ProdB0 = (Nbr = Nbr1[i]) * Nbr2_0 + Prod0;
			      MontDig = ( (int) ProdB0 * montyMultN) &
				    MaxUInt;
			      Prd = (ProdB0 >>> 32) + Nbr * Nbr2_1 + Prod1;
			      Prod0 = (Pr =
				       ( (MontDig * TestNbr0 + MaxUInt) >>> 32) +
				       MontDig * TestNbr1 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_2 + Prod2;
			      Prod1 = (Pr = (Pr >>> 32) + MontDig * TestNbr2 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_3 + Prod3;
			      Prod2 = (Pr = (Pr >>> 32) + MontDig * TestNbr3 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_4 + Prod4;
			      Prod3 = (Pr = (Pr >>> 32) + MontDig * TestNbr4 +
				       (Prd & MaxUInt)) & MaxUInt;
			      Prd = (Prd >>> 32) + Nbr * Nbr2_5 + Prod5;
			      Prod4 = (Pr = (Pr >>> 32) + MontDig * TestNbr5 +

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -