Python中的SPOJ 91(两个正方形或非两个正方形)优化
我试图通过尝试SPOJ问题来练习python,我有点被困在 我使用了程序的逻辑,但在测试解决方案时,我一直会遇到“超过时间限制”的错误。 代码如下:Python中的SPOJ 91(两个正方形或非两个正方形)优化,python,optimization,Python,Optimization,我试图通过尝试SPOJ问题来练习python,我有点被困在 我使用了程序的逻辑,但在测试解决方案时,我一直会遇到“超过时间限制”的错误。 代码如下: import sys import math def factor(n): d=2 primfac = [] while d*d <= n: while n%d == 0: primfac.append(d) n/=d d+=1
import sys import math
def factor(n):
d=2
primfac = []
while d*d <= n:
while n%d == 0:
primfac.append(d)
n/=d
d+=1
return primfac
def fun(num):
factors = factor(num)
r=0
prevr = 0
inc=1
if factors == [] and num%4==1:
return 1
for f in factors:
if f%2!=0 and f%4==3:
r=f
if r==prevr:
inc+=1
prevr = f
if inc%2==0:
return 1
return 0
if __name__ == '__main__':
x=0
for line in sys.stdin:
if(x==0):
x=1
continue
n = int(line)
if(fun(n) == 1):
print 'Yes'
else:
print 'No'
导入系统导入数学
def系数(n):
d=2
primfac=[]
虽然d*d您的代码在提交时(Python2.7)会产生错误的答案,但不会超过时间限制。对于输入值2,它错误地打印“否”