class Sieve: def __init__(self, size): self.size = size self.sieve = {0:False, 1:False} i = 0 while(i<size): if i in self.sieve: i+=1 else: self.sieve[i] = True multiple = 2 while(i * multiple < size): self.sieve[i*multiple] = False multiple+=1 i+=1 def isPrime( self, a ): if(a < self.size): return self.sieve[a] else: raise ValueError("The number is bigger than the max number in the sieve.") def getQ(prime, mask): # checks if each digit of the mask is the same number, # if so, return it. while mask%10 == 0: mask = int(mask/10) prime = int(prime/10) testQ = prime % 10 while(mask): mask = int(mask/10) prime = int(prime/10) if mask%10 == 1: if testQ != prime % 10: # Number does not match the mask return -1 # Number does match the mask, and we return the digit. return testQ def testPrime(prime, mask, sieve): # getQ finds a recurring digit q. # knowing this q we can add in a certain amount of the mask # and see if the result is a prime number q = getQ(prime, mask) if q == -1: # no recurring digit match from getQ and we abort. return 1 # initiate to one, since we already have the one we are testing from primesGenerated = 1 for i in range(1,10): if i + q < 10: generatedNum = prime + i * mask if sieve.isPrime(generatedNum): primesGenerated += 1 else: generatedNum = prime - (i+q+1)%10 * mask if sieve.isPrime(generatedNum) and generatedNum > 10**5: primesGenerated += 1 return primesGenerated def solve51(): MySieve = Sieve(10**6) # 8 numbers n = [x|q][x|q]...[x|q]x. # Where: # x: static numbers, atleast 1 the last one. # q: numbers that change while n is still prime, either 3 or 5. # p = [] for x in range(10**5,10**6): if MySieve.isPrime(x): p.append(x) masks = ([ 111,1011, 1101, 1110, 11100,11010,11001,10110,10101,10011, ]) for n in p: for mask in masks: mask *= 10 if testPrime(n,mask,MySieve) > 7: print(n) return 0 if __name__ == '__main__': solve51()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question