数字是方形或可以写成两个正方形的总和python

问题描述:

我在python中创建了一个程序来检查给定的数字是正方形还是可以写成两个正方形的总和,但它不工作。我。数字是方形或可以写成两个正方形的总和python

def sum(num): 
    def m(a): 
     b=a 
     for item in range(a): 
      b=b-1 
      if a==b*b: 
       return(a) 
    c=num 
    for item in range(1,num): 
     c-=1 
     if m(c)==c and m(d)==d: 
      print(num) 
+3

你是什么意思不起作用?你需要提供你期望的输出。 –

+2

你认为d是什么? –

+0

你是否试图在函数中定义一个函数? – intboolstring

你可以检查,如果事情是一个完美的正方形,如果它的平方平方根的int是其目标

def is_square(n): 
    return int(n**0.5)**2 == n 

第二部分是有点困难(虽然不是硬)

首先,您只需检查达到目标平方根的int,然后添加1

for i in range(0,int(target**0.5+1)): 

然后yo u需要走在剩余的号码,你可以得到德剩余数与

for j in range(i,int((target-i**2)**0.5+1) 

那么所有你需要做的是检查,如果我的平方+ J平方是你的目标,如果它比i,j是您的解决方案

之一