1. 程式人生 > >Python “最短”挑戰(12.30)

Python “最短”挑戰(12.30)

Description

給定兩個整數n和m,計算整數對(a,b)的數量,使得0<a<b<n且(a^2+b^2+m)/(a*b)是整數。

Input

有多行輸入,每行兩個數n(n>0),m(m>0),空格分隔。輸入0 0表示輸入結束。

Output

滿足條件的整數對(a,b)的數量,一行一個。
其餘要求同首題

Sample Input

10 1
20 3
30 4

Sample Output

2
4
5

Reference code

'''
def check(a,b,m):
    x=(a**2+b**2+m)/(a*b)
    return x-int(x)<0.00001
'''
while True: n,m=list(map(int,input().split())) if n==0:break ''' t=0 for a in range(1,n-1): for b in range(a+1,n): if check(a,b,m): t+=1 print(t) ''' print(sum(1 for a in range(1,n-1) for b in range(a+1,n) if (a**2+b**2+m)%(a*b)==0))