Created
October 2, 2021 18:49
-
-
Save foxqstm/02db7518e164c1786a5adcb24fbc4f05 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 199, | |
"id": "6267c689", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237]\n", | |
"Find next prime: 99.01 %\n", | |
"Find true prime: 99.51 %\n" | |
] | |
} | |
], | |
"source": [ | |
"import random\n", | |
"import sympy\n", | |
"import math\n", | |
"\n", | |
"\n", | |
"def predict(p,plist):\n", | |
" q=p+2\n", | |
" BOOL=sympy.isprime(q)\n", | |
" \n", | |
" if BOOL:\n", | |
" return q\n", | |
"\n", | |
" n_iter=5\n", | |
" n_it=100\n", | |
" w=[]\n", | |
" qmin=2*p\n", | |
" for pp in plist:\n", | |
" w.append(1/(2*pp))\n", | |
" BOOLfirst=True\n", | |
" for r in range(1,n_iter):\n", | |
" for rr in range(n_it):\n", | |
" qclist=random.choices(plist,k=r,weights=w)\n", | |
"# qclist=random.choices(plist,k=r)\n", | |
" \n", | |
" prod=1\n", | |
" for qp in qclist:\n", | |
" prod*=qp\n", | |
" q=p+2*prod\n", | |
" \n", | |
" if BOOLfirst and sympy.isprime(q):\n", | |
" qmin=q\n", | |
" BOOLfirst=False\n", | |
" elif sympy.isprime(q):\n", | |
" if qmin>q:\n", | |
" qmin=q\n", | |
" if qmin!=2*p:\n", | |
" if sympy.isprime(qmin):\n", | |
" return qmin\n", | |
" else:\n", | |
" return p+2\n", | |
" \n", | |
"\n", | |
"#plist=[2,3,5,7,11,13,17,19,23,29]\n", | |
"#plist=list(sympy.primerange(2,100))\n", | |
"plist=[2,3,5]\n", | |
"Nmax=200\n", | |
"for n in range(Nmax):\n", | |
" q=predict(plist[-1],plist)\n", | |
" plist.append(q)\n", | |
"print(plist)\n", | |
"\n", | |
"pmax=max(plist)\n", | |
"p_T=list(sympy.primerange(2,pmax))\n", | |
"count=0\n", | |
"for m,p in enumerate(plist):\n", | |
" if m!=len(plist)-1:\n", | |
" for n,pp in enumerate(p_T): \n", | |
" if n!=len(p_T)-1:\n", | |
" if p==pp:\n", | |
" if plist[m+1]==p_T[n+1]:\n", | |
" count+=1\n", | |
" \n", | |
"print('Find next prime:',round(count/len(plist)*100,2),'%')\n", | |
"\n", | |
"count=0\n", | |
"for p in plist:\n", | |
" if p in p_T:\n", | |
" count+=1\n", | |
" \n", | |
"print('Find true prime:',round(count/len(plist)*100,2),'%')" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.8.11" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment