Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy
- def primesfrom2to(n):
- """ Input n>=6, Returns a array of primes, 2 <= p < n """
- sieve = numpy.ones(n//3 + (n%6==2), dtype=numpy.bool)
- for i in range(1,int(n**0.5)//3+1):
- if sieve[i]:
- k=3*i+1|1
- sieve[ k*k//3 ::2*k] = False
- sieve[k*(k-2*(i&1)+4)//3::2*k] = False
- return numpy.r_[2,3,((3*numpy.nonzero(sieve)[0][1:]+1)|1)]
- ones = {}
- for prime in primesfrom2to(1000000):
- ones[prime] = bin(prime).count("1")
- #print(f"{prime} -> {ones}")
- plt.plot(ones.keys(), ones.values(), label='linear')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement