Skip to content

Instantly share code, notes, and snippets.

@foxqstm
Created October 2, 2021 18:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save foxqstm/02db7518e164c1786a5adcb24fbc4f05 to your computer and use it in GitHub Desktop.
Save foxqstm/02db7518e164c1786a5adcb24fbc4f05 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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