PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package big import "math/rand" // ProbablyPrime reports whether x is probably prime, // applying the Miller-Rabin test with n pseudorandomly chosen bases // as well as a Baillie-PSW test. // // If x is prime, ProbablyPrime returns true. // If x is chosen randomly and not prime, ProbablyPrime probably returns false. // The probability of returning true for a randomly chosen non-prime is at most ¼ⁿ. // // ProbablyPrime is 100% accurate for inputs less than 2⁶⁴. // See Menezes et al., Handbook of Applied Cryptography, 1997, pp. 145-149, // and FIPS 186-4 Appendix F for further discussion of the error probabilities. // // ProbablyPrime is not suitable for judging primes that an adversary may // have crafted to fool the test. // // As of Go 1.8, ProbablyPrime(0) is allowed and applies only a Baillie-PSW test. // Before Go 1.8, ProbablyPrime applied only the Miller-Rabin tests, and ProbablyPrime(0) panicked. func (x *Int) ProbablyPrime(n int) bool { // Note regarding the doc comment above: // It would be more precise to say that the Baillie-PSW test uses the // extra strong Lucas test as its Lucas test, but since no one knows // how to tell any of the Lucas tests apart inside a Baillie-PSW test // (they all work equally well empirically), that detail need not be // documented or implicitly guaranteed. // The comment does avoid saying "the" Baillie-PSW test // because of this general ambiguity. if n < 0 { panic("negative n for ProbablyPrime") } if x.neg || len(x.abs) == 0 { return false } // primeBitMask records the primes < 64. const primeBitMask uint64 = 1<<2 | 1<<3 | 1<<5 | 1<<7 | 1<<11 | 1<<13 | 1<<17 | 1<<19 | 1<<23 | 1<<29 | 1<<31 | 1<<37 | 1<<41 | 1<<43 | 1<<47 | 1<<53 | 1<<59 | 1<<61 w := x.abs[0] if len(x.abs) == 1 && w < 64 { return primeBitMask&(1< 10000 { // This is widely believed to be impossible. // If we get a report, we'll want the exact number n. panic("math/big: internal error: cannot find (D/n) = -1 for " + intN.String()) } d[0] = p*p - 4 j := Jacobi(intD, intN) if j == -1 { break } if j == 0 { // d = p²-4 = (p-2)(p+2). // If (d/n) == 0 then d shares a prime factor with n. // Since the loop proceeds in increasing p and starts with p-2==1, // the shared prime factor must be p+2. // If p+2 == n, then n is prime; otherwise p+2 is a proper factor of n. return len(n) == 1 && n[0] == p+2 } if p == 40 { // We'll never find (d/n) = -1 if n is a square. // If n is a non-square we expect to find a d in just a few attempts on average. // After 40 attempts, take a moment to check if n is indeed a square. t1 = t1.sqrt(n) t1 = t1.sqr(t1) if t1.cmp(n) == 0 { return false } } } // Grantham definition of "extra strong Lucas pseudoprime", after Thm 2.3 on p. 876 // (D, P, Q above have become Δ, b, 1): // // Let U_n = U_n(b, 1), V_n = V_n(b, 1), and Δ = b²-4. // An extra strong Lucas pseudoprime to base b is a composite n = 2^r s + Jacobi(Δ, n), // where s is odd and gcd(n, 2*Δ) = 1, such that either (i) U_s ≡ 0 mod n and V_s ≡ ±2 mod n, // or (ii) V_{2^t s} ≡ 0 mod n for some 0 ≤ t < r-1. // // We know gcd(n, Δ) = 1 or else we'd have found Jacobi(d, n) == 0 above. // We know gcd(n, 2) = 1 because n is odd. // // Arrange s = (n - Jacobi(Δ, n)) / 2^r = (n+1) / 2^r. s := nat(nil).add(n, natOne) r := int(s.trailingZeroBits()) s = s.shr(s, uint(r)) nm2 := nat(nil).sub(n, natTwo) // n-2 // We apply the "almost extra strong" test, which checks the above conditions // except for U_s ≡ 0 mod n, which allows us to avoid computing any U_k values. // Jacobsen points out that maybe we should just do the full extra strong test: // "It is also possible to recover U_n using Crandall and Pomerance equation 3.13: // U_n = D^-1 (2V_{n+1} - PV_n) allowing us to run the full extra-strong test // at the cost of a single modular inversion. This computation is easy and fast in GMP, // so we can get the full extra-strong test at essentially the same performance as the // almost extra strong test." // Compute Lucas sequence V_s(b, 1), where: // // V(0) = 2 // V(1) = P // V(k) = P V(k-1) - Q V(k-2). // // (Remember that due to method C above, P = b, Q = 1.) // // In general V(k) = α^k + β^k, where α and β are roots of x² - Px + Q. // Crandall and Pomerance (p.147) observe that for 0 ≤ j ≤ k, // // V(j+k) = V(j)V(k) - V(k-j). // // So in particular, to quickly double the subscript: // // V(2k) = V(k)² - 2 // V(2k+1) = V(k) V(k+1) - P // // We can therefore start with k=0 and build up to k=s in log₂(s) steps. natP := nat(nil).setWord(p) vk := nat(nil).setWord(2) vk1 := nat(nil).setWord(p) t2 := nat(nil) // temp for i := int(s.bitLen()); i >= 0; i-- { if s.bit(uint(i)) != 0 { // k' = 2k+1 // V(k') = V(2k+1) = V(k) V(k+1) - P. t1 = t1.mul(vk, vk1) t1 = t1.add(t1, n) t1 = t1.sub(t1, natP) t2, vk = t2.div(vk, t1, n) // V(k'+1) = V(2k+2) = V(k+1)² - 2. t1 = t1.sqr(vk1) t1 = t1.add(t1, nm2) t2, vk1 = t2.div(vk1, t1, n) } else { // k' = 2k // V(k'+1) = V(2k+1) = V(k) V(k+1) - P. t1 = t1.mul(vk, vk1) t1 = t1.add(t1, n) t1 = t1.sub(t1, natP) t2, vk1 = t2.div(vk1, t1, n) // V(k') = V(2k) = V(k)² - 2 t1 = t1.sqr(vk) t1 = t1.add(t1, nm2) t2, vk = t2.div(vk, t1, n) } } // Now k=s, so vk = V(s). Check V(s) ≡ ±2 (mod n). if vk.cmp(natTwo) == 0 || vk.cmp(nm2) == 0 { // Check U(s) ≡ 0. // As suggested by Jacobsen, apply Crandall and Pomerance equation 3.13: // // U(k) = D⁻¹ (2 V(k+1) - P V(k)) // // Since we are checking for U(k) == 0 it suffices to check 2 V(k+1) == P V(k) mod n, // or P V(k) - 2 V(k+1) == 0 mod n. t1 := t1.mul(vk, natP) t2 := t2.shl(vk1, 1) if t1.cmp(t2) < 0 { t1, t2 = t2, t1 } t1 = t1.sub(t1, t2) t3 := vk1 // steal vk1, no longer needed below vk1 = nil _ = vk1 t2, t3 = t2.div(t3, t1, n) if len(t3) == 0 { return true } } // Check V(2^t s) ≡ 0 mod n for some 0 ≤ t < r-1. for t := 0; t < r-1; t++ { if len(vk) == 0 { // vk == 0 return true } // Optimization: V(k) = 2 is a fixed point for V(k') = V(k)² - 2, // so if V(k) = 2, we can stop: we will never find a future V(k) == 0. if len(vk) == 1 && vk[0] == 2 { // vk == 2 return false } // k' = 2k // V(k') = V(2k) = V(k)² - 2 t1 = t1.sqr(vk) t1 = t1.sub(t1, natTwo) t2, vk = t2.div(vk, t1, n) } return false }