American Citizen on Fri, 17 Nov 2023 22:54:10 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
question on efficient but exhaustive 3 squares algorithm |
As is known, 7, 15 and 23 are the first three numbers which cannot be represented by the sum of 3 squares.
I took the algorithm from the mail list: threesquare(n) = abs(qfsolve(matdiagonal([1,1,1,-n]))[1..3]); and ran 1 <= n <= 25 (except 7 and 15 and 23 of course)I compared that output with that from my sqs3(N) algorithm: (sqs2() is needed by that algorithm)
{sqs2(N)= local(L,i,R); L=abs(qfbsolve(Qfb(1,0,1),N,3)); for(i=1,matsize(L)[2],L[i]=vecsort(L[i],,4)); R=Set(L); return(R); } {sqs3(N)= local(R,L,t,i,M,K); R=Set(); if(N==0,return([[0,0,0]])); for(t=0,sqrtint(N), M=N-t*t; K=sqs2(M); L=Set(vector(matsize(K)[2],i,vecsort([t,K[i][1],K[i][2]],,4))); \\ if(L!=[], for(i=1,matsize(L)[2],print(L[i]))); R=setunion(R,L); ); return(R); }; And I found, comparing the two algorithms that specifically: for n = [1..8] (skipping n=7) the results are identicalfor n = 9, threesquare only posts [0,0,3], but actually there is [2,2,1] also
for n = [10..14] results are identical skip n = 15 n = 16, both identical n = 17, threesquare only gives [4,1,0], but [3,2,2] also exists n = 18, threesquare only gives [0,3,3], but [4,1,1] also exists for n = [19..24] results are identical (skipping n = 23) n = 25, threesquare only gives [0,0,5] but [4,3,0] also existsIt can be seen that threesquare is missing some solutions. Furthermore threesquares() blows up for N=7,15,23, etc.
Can we derive an exhaustive threesquares(N) algorithm which does give all solutions for a specific N? and returns [] if no such representation occurs. This is the same as solving the [1,1,1,0,0,0] ternary quadratric form.
- RandallP.S.: My imagination is intrigued by a new number type in GP-Pari, called "Qft" for Quadratic ternary form and it takes a vector [a,b,c,d,e,f] or 6 elements for composition. Just a thought ??