Jump to content

Square form factorization: Difference between revisions

m
→‎{{header|REXX}}: shortened the program.
mNo edit summary
m (→‎{{header|REXX}}: shortened the program.)
Line 1,219:
do #=1 for @.0; k= @.# /*get a # from the list of low factors*/
if n>big/k then do; say er 'number is too large: ' commas(k); exit 8; end
d= n * k; po= iSqrt(d); p= po
popprev= iSqrt(d)po; QQ= d - pprev= po*po
pqprev= po1; qprevBB= 1iSqrt(s+s)*6
QQ do i=2 d while -i<BB; po * b= (po+p)%QQ
p= b * QQ - p; q= QQ
BB= iSqrt(s+s) * 6
do iQQ=2 qprev while+ i<BBb*(pprev-p); br= iSqrt(po + pQQ) % QQ
p= b * QQ - p; q= QQ
QQ= qprev + b * (pprev - p)
r= iSqrt(QQ)
if i//2==0 then if r*r==QQ then leave
qprev= q; pprev= p
end /*i*/
if i>=BB then iterate
b= (po - p) %r; p= b*r + p
ppprev= bp; * r + p qprev= r
pprevQQ= p; (d - pprev*pprev)%qprev= r
QQ= (d - do until p==pprev*pprev); % qprev pprev= p
do untilb= (po+p==pprev)%QQ; q= pprevQQ; p= b*QQ - p
bQQ= (poqprev + b*(pprev-p); % QQ qprev= q
p= b * QQ - p; q= QQ
QQ= qprev + b * (pprev - p)
qprev= q
end /*until*/
r= gcd(n, qprev)
Cookies help us deliver our services. By using our services, you agree to our use of cookies.