Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Week 10 projects:
- #Patterns in primes
- import matplotlib.pyplot as plt
- n = 100
- #1)
- #a)
- def primelist(n):
- prime_list = list(range(2,n+1))
- for i in prime_list:
- j=2
- while i*j <= prime_list[-1]:
- if i*j in prime_list:
- prime_list.remove(i*j)
- j = j+1
- return prime_list
- #primes = primelist(N)
- #b)
- def prime_test(n):
- for i in range(2, n):
- if n % i == 0:
- return False
- return True
- #c)
- def twinprimes(n):
- twinprimes_list = []
- for i in range(2,n):
- j = i+2
- if(prime_test(i) and prime_test(j)):
- twinprimes_list.append((i,j))
- return twinprimes_list
- def twinprimes_sing(n):
- twinprimes_sing_list = []
- for i in range(2,n):
- j = i+2
- if(prime_test(i) and prime_test(j)):
- twinprimes_sing_list.append(j)
- return twinprimes_sing_list
- #d)
- def sgprimes(n):
- sgprimes_list = []
- for i in range(2,n):
- j = 2*i+1
- if(prime_test(i) and prime_test(j)):
- sgprimes_list.append(i)
- return sgprimes_list
- #e)
- #Non Logarithmic Plots:
- a = 20000
- fig1, ax1 = plt.subplots()
- x = primelist(a)
- y = [i+1 for i in range(len(primelist(a)))]
- ax1.plot(x,y, '-b', label = 'Primes')
- ax1.legend(loc = 'upper left')
- x = twinprimes_sing(a)
- y = [i+1 for i in range(len(twinprimes_sing(a)))]
- ax1.plot(x,y, '-r', label = 'Twin Primes')
- ax1.legend(loc = 'upper left')
- x = sgprimes(a)
- y = [i+1 for i in range(len(sgprimes(a)))]
- ax1.plot(x,y, '-', color = 'orange', label = 'Sophie Germain Primes')
- ax1.legend(loc = 'upper left')
- plt.xlabel('n')
- plt.ylabel('Respective Prime Counts')
- plt.title('Prime/Twin Prime/SG Prime Counts')
- fig1.show()
- #Logarithmic Plots:
- fig2, ax2 = plt.subplots()
- x = primelist(a)
- y = [i+1 for i in range(len(primelist(a)))]
- ax2.loglog(x,y, '-b', label = 'Primes')
- ax2.legend(loc = 'upper left')
- x = twinprimes_sing(a)
- y = [i+1 for i in range(len(twinprimes_sing(a)))]
- ax2.loglog(x,y, '-r', label = 'Twin Primes')
- ax2.legend(loc = 'upper left')
- x = sgprimes(a)
- y = [i+1 for i in range(len(sgprimes(a)))]
- ax2.loglog(x,y, '-', color = 'orange', label = 'Sophie Germain Primes')
- ax2.legend(loc = 'upper left')
- plt.xlabel('log(n)')
- plt.ylabel('Respective Prime Counts')
- plt.title('Prime/Twin Prime/SG Prime Counts (Logarithmic)')
- fig2.show()
- #2
- #a)
- def sexyprimes(n):
- sexyprimes_list = []
- for i in range(2,n):
- j = i+6
- if(prime_test(i) and prime_test(j)):
- sexyprimes_list.append((i,j))
- return sexyprimes_list
- #b)
- def tripletprimes(n):
- tripletprimes_list = []
- for i in range(2,n):
- j,k,l = i+2,i+4,i+6
- if(prime_test(i) and prime_test(j) and prime_test(l)):
- tripletprimes_list.append((i,j,l))
- if(prime_test(i) and prime_test(k) and prime_test(l)):
- tripletprimes_list.append((i,k,l))
- return tripletprimes_list
- #c)
- def tripletprimes_count(n): return len(tripletprimes(n))
- def sexyprimes_count(n): return len(sexyprimes(n))
- def twinprimes_count(n): return len(twinprimes(n))
- def S(n):
- if sexyprimes_count(n) != 0:
- return tripletprimes_count(n)/sexyprimes_count(n)
- def T(n):
- if twinprimes_count(n) != 0:
- return tripletprimes_count(n)/twinprimes_count(n)
- def S_output(n):
- listy = []
- for i in range(1,n):
- x = S(i)
- if S(i) != S(i-1):
- listy.append(x)
- return listy
- def S_list(n):
- listx = []
- for i in range(1,n):
- if S(i) != S(i-1):
- listx.append(i)
- return listx
- def T_output(n):
- listy = []
- for i in range(1,n):
- x = T(i)
- if T(i) != T(i-1):
- listy.append(x)
- return listy
- def T_list(n):
- listx = []
- for i in range(1,n):
- if T(i) != T(i-1):
- listx.append(i)
- return listx
- '''
- fig3, ax3 = plt.subplots()
- fig4, ax4 = plt.subplots()
- S_T_value
- x_2 = T_list(200)
- y_2 = T_output(200)
- plot_c = ax3.plot(x_2,y_2,label = 'T(n) against n.')
- x_1 = S_list(500)
- y_1 = S_output(500)
- plot_d = ax4.plot(x_1,y_1,label = 'S(n) against n.')
- fig3.show()
- fig4.show()
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement