샨크의 사각형 형태 인자화
Shanks's square forms factorization![]() |
샨크의 사각형 형태 인자화는 페르마의 인자화 방법의 개선으로 다니엘 샨크가 고안한 정수 인자화 방법이다.
Fermat의 방법의 성공 여부는 x 과 을 (를) 찾느냐에 따라 결정되며 서 은 인수할 정수다.An improvement (noticed by Kraitchik) is to look for integers and such that . Finding a suitable pair does not guarantee a factorization of ,but it implies that is a factor of , and there is a good chance that the prime divisors of are distributed between these two factors, so that calculation of the greatest common divisor of 및 - y 은 (는) 의 비독점 인자를 제공한다
( x을(를) 만족하는 쌍, ){\을(를) 찾기 위한 실용적인 알고리즘이 샨크스에 의해 개발되었으며, 이 알고리즘은 Square Factorization 또는 SUFOF.알고리즘은 연속 분율 또는 이차적 형태로 표현될 수 있다.지금은 훨씬 더 효율적인 인자화 방법이 있지만, SUTFOF는 프로그램 가능한 계산기에서 구현될 수 있을 만큼 작다는 장점을 가지고 있다.
In 1858, the Czech mathematician Václav Šimerka used a method similar to SQUFOF to factor .[1]
알고리즘.
입력: 인수할 정수(Prime number 또는 완벽한 사각형) 및 작은 k
: N 의 비교 계수.
알고리즘:
초기화 = , Q = , = k - . }{2
반복하다
+ 가 i + 에서도 한 사각형이 될 때까지
Initialize
반복하다
= - . 까지.
Then if is not equal to and not equal to , then is a non-trivial factor of . Otherwise try another value of .
Shanks의 방법은 시간 O( O
Stephen S. McMath는 그 정확성에 대한 증거와 함께 샨크스 방법의 수학에 대한 보다 자세한 토론을 썼다.[2]
예
Let = ,= }
사이클 포워드 | |||
---|---|---|---|
여기서 = 는 완벽한 사각형이다.
역주기 | |||
---|---|---|---|
여기 = = .
( )= 의 인수
N= = ⋅
구현 예
다음은 과도 연산의 오버플로 없이 64비트 이하의 부호 없는 정수에 대해 SUFOF 인자화를 수행하는 C 함수의 예다.[citation needed]
#include <내형.h> #new nelems(x) (sizeof(x) / sizeof(x)[0])) 경솔하게 굴다 인트로 곱셈을 하다[] = {1, 3, 5, 7, 11, 3*5, 3*7, 3*11, 5*7, 5*11, 7*11, 3*5*7, 3*5*11, 3*7*11, 5*7*11, 3*5*7*11}; uint64_t 스쿼포프( uint64_t N ) { uint64_t D, 포, P, 프프레프, Q, 큐프레프, q, b, r, s; uint32_t L, B, i; s = (uint64_t)(sqrtl(N)+0.5); 만일 (s*s == N) 돌아오다 s; 을 위해 (인트로 k = 0; k < 네임즈(곱셈을 하다) && N <= UINT64_MAX/곱셈을 하다[k]; k++) { D = 곱셈을 하다[k]*N; 포 = 프프레프 = P = sqrtl(D); 큐프레프 = 1; Q = D - 포*포; L = 2 * sqrtl( 2*s ); B = 3 * L; 을 위해 (i = 2 ; i < B ; i++) { b = (uint64_t)((포 + P)/Q); P = b*Q - P; q = Q; Q = 큐프레프 + b*(프프레프 - P); r = (uint64_t)(sqrtl(Q)+0.5); 만일 (!(i & 1) && r*r == Q) 부숴뜨리다; 큐프레프 = q; 프프레프 = P; }; 만일 (i >= B) 계속하다; b = (uint64_t)((포 - P)/r); 프프레프 = P = b*r + P; 큐프레프 = r; Q = (D - 프프레프*프프레프)/큐프레프; i = 0; 하다 { b = (uint64_t)((포 + P)/Q); 프프레프 = P; P = b*Q - P; q = Q; Q = 큐프레프 + b*(프프레프 - P); 큐프레프 = q; i++; } 하는 동안에 (P != 프프레프); r = gcd(N, 큐프레프); 만일 (r != 1 && r != N) 돌아오다 r; } 돌아오다 0; }
참조
- ^ Lemmermeyer, F. (2013). "Václav Šimerka: quadratic forms and factorization". LMS Journal of Computation and Mathematics. 16: 118–129. doi:10.1112/S1461157013000065.
- ^ "Daniel Shanks' Square Forms Factorization". CiteSeerX 10.1.1.107.9984.
{{cite journal}}
:Cite 저널은 필요로 한다.journal=
(도움말)
- D. A. Buell (1989). Binary Quadratic Forms. Springer-Verlag. ISBN 0-387-97037-1.
- D. M. Bressoud (1989). Factorisation and Primality Testing. Springer-Verlag. ISBN 0-387-97040-1.
- Riesel, Hans (1994). Prime numbers and computer methods for factorization (2nd ed.). Birkhauser. ISBN 0-8176-3743-5.
- Samuel S. Wagstaff, Jr. (2013). The Joy of Factoring. Providence, RI: American Mathematical Society. pp. 163–168. ISBN 978-1-4704-1048-3.
외부 링크
- Daniel Shanks: 인자화 지속분수법의 분석과 개선 (S에 의해 번역됨)McMath 2004)
- Daniel Shanks: SUFOF Notes, (S에 의해 번역됨)McMath 2004)
- Stephen S. McMath: 2차 형태를 사용한 병렬 정수 인자화, 2005
- S. 맥매트, F. 크랩베, D.Joyner: 연속 분수 및 병렬 SUTFOF, 2005
- Jason Gower, Samuel Wagstaff: 스퀘어 폼 팩터화(발표)
- Shanks의 SQFOF 인수 알고리즘
- 자바 수학적 분석