patternpythonMinor
Writing cubic sums a better way
Viewed 0 times
cubicwritingwaybettersums
Problem
I was asked the following problem:
What is the smallest positive integer n that can be written as a sum of three positive cubes in at least 12 ways?
Can this be coded better way such that it is easy to compute the smallest positive integer that is sum of m nth powers? I'm not a professional programmer, so I managed only to write one solution that works.
What is the smallest positive integer n that can be written as a sum of three positive cubes in at least 12 ways?
Can this be coded better way such that it is easy to compute the smallest positive integer that is sum of m nth powers? I'm not a professional programmer, so I managed only to write one solution that works.
l = list()
for i in range(1,500):
for j in range(i,500):
for k in range(j,500):
l.append(i**3+j**3+k**3)
l.sort()
for i in range(0,len(l)-12):
if l[i] == l[i+12]:
number = l[i]
for i in range(1,500):
for j in range(i,500):
for k in range(j,500):
if i**3+j**3+k**3 == number:
print(str(number)+"="+str(i)+"^3+"+str(j)+"^3+"+str(k)+"^3")Solution
Instead of three nested
for loops, you can use itertools to enumerate combinations. Also, I would personally prefer to keep a count in a dictionary, as opposed to storing the same numbers over and over. import itertools
cube_counts = {}
for i, j, k in itertools.combinations(range(1, 500), 3):
cube = i**3 + j**3 + k**3
cube_counts[cube] = cube_counts.get(cube, 0) + 1
print(min([cube for cube, count in cube_counts.items() if count >= 12]))Code Snippets
import itertools
cube_counts = {}
for i, j, k in itertools.combinations(range(1, 500), 3):
cube = i**3 + j**3 + k**3
cube_counts[cube] = cube_counts.get(cube, 0) + 1
print(min([cube for cube, count in cube_counts.items() if count >= 12]))Context
StackExchange Code Review Q#69538, answer score: 5
Revisions (0)
No revisions yet.