login
This site is supported by donations to The OEIS Foundation.

 

Logo


Hints
(Greetings from The On-Line Encyclopedia of Integer Sequences!)
A075777 Minimal surface area of a rectangular solid with volume n and integer sides. 4
6, 10, 14, 16, 22, 22, 30, 24, 30, 34, 46, 32, 54, 46, 46, 40, 70, 42, 78, 48, 62, 70, 94, 52, 70, 82, 54, 64, 118, 62, 126, 64, 94, 106, 94, 66, 150, 118, 110, 76, 166, 82, 174, 96, 78, 142, 190, 80, 126, 90, 142, 112, 214, 90, 142, 100, 158, 178, 238, 94, 246, 190 (list; graph; refs; listen; history; text; internal format)
OFFSET

1,1

COMMENTS

To find minimum surface area (incorrect, see below!), let s1_0 = [n^(1/3)]. Find largest integer s1 such that s1 <= s1_0 and s1 | n. Then let s2_0 = [sqrt(n / s1)]. Find largest integer s2 such that s2 <= s2_0 and s2 | (n / s1). Then s3 = n / (s1 * s2). And minimum surface area a(n) = 2 * (s1 * s2 + s1 * s3 + s2 * s3).

The above algorithm is not correct. Consider n=68: algorithm returns (s1,s2,s3) = (4,1,17) for minimal surface area 178. However, (2,2,17) has a surface area of 144. Consider n=246: algorithm gives (6,1,41) but (3,2,41) has a lower surface area. It appears that the algorithm, by picking s1 to be the highest divisor of n, does not get the chance to choose a pair (s1,s2) that is equal or nearly equal. I wrote a Python script for a new algorithm (posted below). However, it is much slower since it loops through every divisor s1 of n and divisor s2 of a given n/s1 while finding and keeping a minimum surface area. (Ceiling is used to avoid a floating point error on the roots.) - Scott B. Farrar, Sep 29 2015

LINKS

Robert Israel, Table of n, a(n) for n = 1..10000

Dan Meyer, The Math Problem that 1000 Math Teachers Couldn't Solve

EXAMPLE

a(12) = 32 because side lengths of 2, 2 and 3 will give volume 12 and surface area 32, which is the minimum surface area.

MAPLE

N:= 1000: # to get a(1) .. a(N)

A:= Vector(N, 1)*6*N;

for p1 from 1 to N do

  for p2 from p1 to floor(N/p1) do

     for p3 from p2 to floor(N/p1/p2) do

        n:= p1*p2*p3;

        a:= 2*(p1*p2 + p2*p3 + p1*p3);

        if a < A[n] then A[n]:= a fi

od od od:

seq(A[i], i=1..N); # Robert Israel, Sep 30 2015

PROG

(PARI) a(n) = {s1_0 = floor(n^(1/3)); s1 = s1_0; while (n % s1 != 0, s1--); s2_0 = floor(sqrt(n/s1)); nds1 = n/s1; s2 = s2_0; while (nds1 % s2 != 0, s2--); s3 = n/(s1*s2); return (2 * (s1 * s2 + s1 * s3 + s2 * s3)); } \\ Michel Marcus, Apr 14 2013; script based on 1st algorithm now known to give ok terms up to n=67 only

(PARI) a(n) = {mins = -1; fordiv(n, x, q = n/x; fordiv(q, y, z = q/y; s = 2*(x*y + y*z +x*z); if (mins ==-1, mins =s, mins = min(mins, s)); ); ); mins; } \\ Michel Marcus, Sep 30 2015

(Python)

import math

def cubestepdown(n):

    s1_0 = int(math.ceil(n ** (1 / 3.0)))

    minSA = -1

    s1 = s1_0

    while s1>=1:

        while n % s1 > 0:

            s1 = s1 - 1

        s1quot = int(n/s1)

        s2_0 = int(math.ceil(math.sqrt(n/s1)))

        s2 = s2_0

        while s2>=1:

            while s1quot % s2 > 0:

                s2 = s2 - 1

            s3 = int(n / (s1 * s2))

            SA = 2*(s1*s2 + s1*s3 + s2*s3)

            if minSA==-1:

                minSA = SA

            else:

                if SA<minSA:

                    minSA = SA

            s2 = s2 - 1

        s1 = s1 - 1

    return minSA

# Scott B. Farrar, Sep 29 2015

CROSSREFS

Cf. A135711.

Sequence in context: A228301 A193416 A315160 * A315161 A315162 A207870

Adjacent sequences:  A075774 A075775 A075776 * A075778 A075779 A075780

KEYWORD

easy,nonn

AUTHOR

Robert A. Stump (bee_ess107(AT)msn.com), Oct 09 2002

STATUS

approved

Lookup | Welcome | Wiki | Register | Music | Plot 2 | Demos | Index | Browse | More | WebCam
Contribute new seq. or comment | Format | Style Sheet | Transforms | Superseeker | Recent
The OEIS Community | Maintained by The OEIS Foundation Inc.

License Agreements, Terms of Use, Privacy Policy. .

Last modified June 20 09:27 EDT 2019. Contains 324234 sequences. (Running on oeis4.)