寻找N以内的完美立方数
-
什么是完美立方数
完美立方数:存在四个整数,满足 a 3 = b 3 + c 3 + d 3 % \f is defined as #1f(#2) using the a^3=b^3+c^3+d^3 a3=b3+c3+d3,其中a被称为完美立方数 -
解决思路
本题首先将1-N的立方值存入num数组(N已给定),再进行嵌套循环,找出满足的b,c,d值并存入元组中。相较于四重嵌套减少一重,每次判定不用计算四个数的立方值,这大大减少了运行时间 -
具体要求
1.对任给的正整数1-N(N≤100),寻找所有的四元组(a,b,c,d),使得 % \f is defined as #1f(#2) using the a^3=b^3+c^3+d^3 , 其中a,b,c,d大于1,小于等于N。2.输入一个正整数 N(N≤100),每行输出一个完美立方数。输出格式为:
Cube=a,Tiple=(b,c,d)其中a,b,c,d所在位置分别用实际求出四元组值代入。
3.请按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则b值小的优先输出,仍相同则c值小的优先输出,再相同则d值小的先输出。 -
代码实现
def Cube(x):
alist=[]
num=[]
for i in range(1,x+1):
num.append(i**3) #num列表存储N以内自然数的立方值
for b in range(x-1,1,-1):
for c in range(b-1,1,-1):
for d in range(c-1,1,-1):
t=b**3+c**3+d**3
if t in num: #遍历循环,使b>c>d,当结果属于num时
alist.append((num.index(t)+1,b,c,d))
#结果所在下标+1即为a的值
#并将a,b,c,d以元组的形式存入alist
return alist
N=int(input("input a number:"))
for i in sorted(Cube(N),reverse=False):
print("Cube=",i[0]," Triple=",i[1:])
- 结果查看
PS:如果对代码有什么疑问或者独家见解,欢迎点赞并在评论区留言(比心)