-->
0 Members and 1 Guest are viewing this topic.
ceiling(sqrt(c))→aWhile notperfectsqaure(a*a-c)a+1→aEndWhilesqrt(a*a-c)→bReturn {a-b,a+b}
ceiling(sqrt(c))→aa*a-c→b2While notperfectsqaure(b2)b2+2a+1→b2a+1→aEndWhilesqrt(b2)→bReturn {a-b,a+b}
ceiling(sqrt(c))→aa*a-c→difffloor(sqrt(diff))→bdiff-b*b→diffWhile diff>0 diff+a+a+1→diff a+1→a While diff>=(2b+1) diff-b-b-1→diff b+1→b EndWhileEndWhileReturn {a-b,a+b}
ceiling(sqrt(c))→aa*a-c→difffloor(sqrt(diff))→bdiff-b*b→diff2a+1→a2b+1→bWhile diff>0 diff+a→diff a+2→a While diff>=b diff-b→diff b+2→b EndWhileEndWhilefloor(a/2)→afloor(b/2)→bReturn {a-b,a+b}
If 0==c%2 Return {2,a/2}sqrt(c)→aIf floor(a)=a Return {a,a}1+floor(a)→aa*a-c→difffloor(sqrt(diff))→bdiff-b*b→diff2a-1→a2b-1→bdiff-b→diffLoop0: a+2→a diff+a→diff if carry_setLoop1: b+2→b diff-b→diff GOTO Loop1 IF carry_not_set GOTO Loop0 IF zero_not_seta>>1→ab>>1→bReturn {a-b,a+b}