Ich setze sogar die zwei Hauptarrays zum Schluß immer auf "None"
Wenn ihr den Code laufen lassen wollt, müßt ihr numpy und primesieve installen und
eine logDatei in dem selben Verzeichniss mit dem Namen "MPMP_19_mit_primesieve.log" mit Inhalt z.B
"[1500000000000, 45624190113149, 1017423309728666061300174678423263757851]
"
erzeugen.
Außerdem bin ich für jede Performanzsteigerung, jeglicher Art, dankbar.
Bin gespannt .... Kalli
Code: Alles auswählen
from sys import stdout
from primesieve.numpy import *
import re
import os, sys
import numpy
import time
import json
import winsound
import linecache
#---------------------------------------------------------------------------
def printundspeichern(p,n,summe,was):
if was == 'gefunden':
print("n =",n,"... prime =", p, "... sum of primesquares (accumulated) =", summe, "... so n divides the sum of the Squares:",(summe // n),"times")
f = open ("MPMP_19_mit_primesieve.log", "a")
f.write("n = " + str(n) + " ... prime = " + str(p) + " ... sum of primesquares (accumulated) = " + str(summe) + " ... so n divides the sum of the Squares: " + str((summe // n)) + " times" + "\n")
f.close()
if was == 'bereich':
resarray = []
resarray.append(n)
resarray.append(p)
resarray.append(summe)
f = open ("MPMP_19_mit_primesieve.log", "a")
f.write(str(resarray)+ "\n")
f.close()
#---------------------------------------------------------------------------
resarray = []
f = open("MPMP_19_mit_primesieve.log", "r")
linecache.clearcache()
zeile = linecache.getlines("MPMP_19_mit_primesieve.log")[-1]
f.close
neuezeile = ''.join((ch if ch in '0123456789' else ' ') for ch in zeile)
resarray = [int(i) for i in neuezeile.split()]
potenz = 8
ZeitGesamt = 0
n = resarray[0]
letzte = resarray[1]
summe = resarray[2]
ZeitStart = time.time()
for x in range(1,1000000000):
primesarray = numpy.array(n_primes(pow(10,potenz), letzte+1), dtype=object) # (Stück, ab Primzahl)
gesamtarray = numpy.cumsum((primesarray * primesarray), dtype=object)
gesamtarray[-1] += summe
summe = gesamtarray[-1]
n += gesamtarray.size
letzte = primesarray[-1]
ZeitEnd = time.time()
ndigit = int(str(n)[3])
space = ' '
print(space[0:ndigit]," Time = %3.3f " % (ZeitEnd - ZeitStart), space[0:(10-ndigit)], "n =", n, "... prime =", letzte, "... sum of primesquares (accumulated) =", summe)
ZeitStart = ZeitEnd
if n % (pow(10,potenz + 2)) == 0:
printundspeichern(primesarray[-1],n,summe,'bereich')
winsound.Beep(440, 1000)
primesarray = None
gesamtarray = None