Python3经典100道练习题003

题目:一个整数,它加上100后是一个完全平方数,
再加上268又是一个完全平方数,请问该数是多少?

方法:利用循环去判断x+100和x+268是否为完全平方数,没用使用其他函数,缺点运算速度慢

 1 x=-100
 2 while x<=2000:
 3     y=x+100
 4     z=x+268
 5     p=0
 6     q=0
 7     if y==1:
 8         p=1     
 9     else:
10         for i in range(1,int(y/2)):
11             if i**2==y:
12                 p=1
13                 continue
14         
15         
16     if z==1:
17         q=1
18     else:
19         for i in range(1,int(z/2)):
20              if i**2==z:
21                  q=1
22                  continue
23 
24     
25     if p==1 and q==1:
26         print(x)
27             
28     x=x+1       

【网上好办法】

方法一:

1 t = []
2 for m in range(168):
3     for n in range(m):
4         if m**2 - n**2 == 168:
5             x = n**2 - 100
6             t.append(x)
7 print('符合条件的整数有:',t )

方法二:

1 x=[]
2 for m in range(-168,169):
3     for n in range(-168,169):
4         if (m+n)*(m-n)==168:#m,n都是整数
5             x.append(n**2-100)
6 x=set(x)#用集合的方法去掉重复值
7 x=list(x)#将集合类型改为列表类型
8 print('要求的值为:',x)

方法三:

1 print([n**2-100 for m in range(168) for n in range(m) if(m+n)*(m-n)==168])
原文地址:https://www.cnblogs.com/mathpro/p/7953013.html