Thursday, 11 July 2019

Sphenic Brick Trajectories

I've made mention of sphenic numbers in three earlier posts. Specifically:
I've long championed the association between the surface area of a sphenic brick and its volume. Consider a sphenic number such as 170 that factors to 2 * 5 * 17. It can be considered to represent a rectangular prism with volume 170 cubic units and dimensions of 2, 5 and 7 units. The surface area of such a prism is 258 square units. In previous posts, I've examined the ratio of surface area to volume but today a thought struck me. What if the surface area itself in a sphenic number? This would mean that the surface area could be linked to another rectangular prism.

This is indeed the case for 170 because its surface area of 258 = 2 * 3 * 43 and can thus be linked to a prism with volume of 258 cubic units and dimensions of 2, 3 and 43 units. This prism has a surface area of 442 square units. The obvious question is: can this process be continued? Well 442 = 2 * 13 * 17 and so the answer is yes. The resulting prism has a surface area of 562 square units but 562 = 2 * 281 and so this is where things stopped.

I then got to thinking about the maximum number of iterations possible up to a certain limit. To investigate this, I needed to develop a robust algorithm and I spent most of the day tinkering with one. In the end, using SageMathCell, I succeeded. Here's a permalink to the coding window and below is the code, showing runs of eight up to 10,000:

INPUT 
run=8
V=[];W=[]
for n in [1..10000]:
    if len(divisors(n))==8 and len(list(factor(n)))==3:
        V.append(n)
for v in V:
    area=1
    w=v
    count=0
    W.append(v)
    while area<>0:
        if len(divisors(w))==8 and len(list(factor(w)))==3:
            F=list(factor(w))
            G=[]
            for f in F:
                G.append(f[0])
            area=2*(G[0]*G[1]+G[0]*G[2]+G[1]*G[2])
            count+=1
        else:
            area=0
        if area <>0:
            W.append(area)
        else:
            W.append(count)
        w=area
for i in range(0,len(W)):
    if W[i]==run:
        for x in [1..run+1]:
            print W[i-x],
        print 
OUTPUT 

25642 22882 22042 20194 19018 18178 12970 12322 7386
17902 16942 15502 14734 14062 12142 11086 10414 8078
25642 22882 22042 20194 19018 18178 12970 10066 9514
17902 16942 15502 14734 14062 12142 9422 5646 9515
25642 22882 22042 20194 19018 18178 12970 12322 9562

I'm sure professional coders would look in horror at my approach but at least it works. Given that the smallest sphenic number is 30, the count of iterations serves as a marker to identify where a run of a certain length occurs. To identify the runs of eight as in the example above, simply enter run=8 and then go back nine entries in the list. So starting with 7386, there is then a run of eight sphenic numbers generated by the volume-area iteration. The run ends at 25642 which is not a sphenic number. Similarly for the other chains shown and it should be noted that several chains merge into others. For example, 7386, 9514 and 9562, all end with 25642. So, how many iterations are possible? Well, up to one million, there are three chains of 14 iterations, all ending in 320746:

320746 307474 219610 210466 205834 200962 198442 182482 130330 110242 105562 103282 99322 94546 92314
320746 307474 219610 210466 205834 200962 198442 182482 130330 110242 105562 103282 99322 94546 92714
320746 307474 219610 210466 205834 200962 198442 182482 130330 110242 105562 103282 99322 97282 95146

SageMathCell timed out above one million so there may well be longer chains out there but for the moment I haven't discovered them. I've used the terms "iterations", "runs" and "chains" for these sets of related sphenic numbers but the term "trajectory" struck me as most appropriate and that's why I've used it in the title of this post. The Collatz trajectory comes to mind as perhaps the most famous trajectory that I know of in number theory.

No comments:

Post a Comment