defforma4m1(n):'da +1 ó -1 según un número sea de la forma 4m+1 o 4m-1'if(n+1)%4==0:return+1if(n-1)%4==0:return-1return+1
# Aquí guardaremos a lista de valores de pi por cada términoapi=[]# Los dos primeros términos son 1 y 1/2api.append([1,1])api.append([2,1.5])mipi=1+0.5terminos=10000foriinrange(terminos)[3:]:fa=list(factor(i))ifis_prime(i):signo=forma4m1(i)else:signo=1forfinfa:forf2inrange(f[1]):signo*=forma4m1(f[0])mipi+=signo*1./iapi.append([i,mipi])printmipilist_plot(api,plotjoined=True)