我知道这是一段糟糕的代码,可能不清楚我想要实现什么。我只是从编码开始。
基本上,我需要找出是否存在(或存在)这样的正整数n
,它将n*(n+1)(n**2+1)+1
变成一个完美的正方形。我确定3
可以满足目标,但即使知道这一事实,我也无能为力。
很明显,应该有一个循环来检查n > 1
的值,但是我似乎无法弄清楚如何记下来而不引起n is not defined
错误。我尝试通过输入函数定义n
并手动进行操作,但导致此错误:Int ... can't be called.
# n*(n+1)(n**2+1)+1
import math
n = int(n)
m = n*(n+1)(n**2+1)+1
while n > 1 :
if math.sqrt(m) == int:
print(n)
break
答案 0 :(得分:2)
首先,您需要使用初始值定义n。 然后,您可以测试m的平方根是否是整数,从而m是一个完美的平方,还需要在下一次迭代中将n递增
import math
n = 2
while n > 1 :
m = n*(n+1)(n**2+1)+1
if math.sqrt(m).is_integer():
print(n)
break
else:
n+=1
答案 1 :(得分:0)
这是您想要的吗?
import math
#get a input num
n = int(input('type a num:\n'))
#options that are open:
m = n*(n+1) + (n**2+1)+1 # add
#m = n*(n+1) * (n**2+1)+1 = mul
#m = n*(n+1) / (n**2+1)+1 = div
#m = n*(n+1) - (n**2+1)+1 = sub
#n > 1?
if n > 1 :
#if the types are the same
if type(math.sqrt(m)) == type(int):
print(n)
#else print the other info about what could be going wrong
else:
print(math.sqrt(m))
print(n)
答案 2 :(得分:0)
我认为这是您要实现的目标:
import math
n = int(input()) #taking input from user
m = n*(n+1)*(n**2+1)+1 #defining m
o = math.sqrt(m) #taking squareroot
if int(o) == o:
print(str(n) + ' fits the criteria!')
else:
print(str(n) + ' does not fit the criteria.')
答案 3 :(得分:0)
n
未定义,因为您的代码说n = (int) n
并且n
以前从未定义过,因此请尝试在行中写上n =
,然后输入一个值