我有一个长度为150的整数数组,整数范围从1到3.例如,
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数学算法.所有它做的是它需要一个输入并找到i,j使得i ^ 2 + j ^ 2 =具有j> = i的限制的输入(因此它不打印它的对应物,例如,2 ^ 2 + 3 ^ 2 == 3 ^ 2 + 2 ^ 2但我只需要后者为j> = i)
对于我的代码,我做了以下内容:我有2个for循环,第一个循环用于i,第二个循环用于j.取i和j值并测试i ^ 2 + j ^ 2 ==输入和j> = i.如果是,请打印并更新计数.
问题是,对于大量的值,它需要很长的时间,因为它从1到2000再循环两次,然后再循环1到2000.
def some_mathfn(n):
count = 0
for i in range(1,n+1):
for j in range(1,n+1):
if(i**2 + j**2 == n and j >= i):
g = print(i, '^2 + ', j,'^2')
count += 1
return count
some_mathfn(2001)
Run Code Online (Sandbox Code Playgroud)