diff --git a/ctnt2018/Untitled1.ipynb b/ctnt2018/Untitled1.ipynb deleted file mode 100644 index 26bc131..0000000 --- a/ctnt2018/Untitled1.ipynb +++ /dev/null @@ -1,374 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "U=59649589127497217" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "N=2**(128)+1" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "V=N//U" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "P=np.zeros(10000)\n", - "P[0]=1\n", - "P[1]=1\n", - "for i in range(2,10000):\n", - " if P[i]==0:\n", - " j=2\n", - " while i*j<10000:\n", - " P[i*j]=1\n", - " j=j+1\n", - "Primes10000=[i for i,x in enumerate(P) if x==0 ] " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "K=U-1" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "for x in Primes10000:\n", - " if K % x ==0:\n", - " print(x)\n", - " K=K//x" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "def mexp(a,x,N):\n", - " m,s=1,a\n", - " while x>0:\n", - " if x % 2 ==1:\n", - " m=((m*s) % N)\n", - " s=((s*s) % N)\n", - " x=x//2\n", - " return m" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "59649589127497216" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mexp(3,K,U)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "# %load ECM.py\n", - "# %load ec3.py\n", - "from math import factorial, gcd, log\n", - "import numpy as np\n", - "P=np.zeros(1000)\n", - "P[0]=1\n", - "P[1]=1\n", - "for i in range(2,100):\n", - " if P[i]==0:\n", - " j=2\n", - " while i*j<100:\n", - " P[i*j]=1\n", - " j=j+1\n", - "Primes1000=[i for i,x in enumerate(P) if x==0 ] \n", - "\n", - "\n", - "def mexp(a,x,N):\n", - " m,s=1,a\n", - " while x>0:\n", - " if x % 2 ==1:\n", - " m=((m*s) % N)\n", - " s=((s*s) % N)\n", - " x=x//2\n", - " return m\n", - "\n", - "def euclid(u,v):\n", - " if v==0:\n", - " raise ArithmeticError('Division by Zero')\n", - " x0,x1=u,v\n", - " a0,a1=1,0\n", - " b0,b1=0,1\n", - " while x1!=0:\n", - " q=x0//x1\n", - " x2=x0-q*x1\n", - " a2=a0-q*a1\n", - " b2=b0-q*b1\n", - " x0,a0,b0=x1,a1,b1\n", - " x1,a1,b1=x2,a2,b2\n", - " if x0<0:\n", - " return -x0,-a0,-b0\n", - " else:\n", - " return x0,a0,b0\n", - "\n", - "def mod_inv(u,N):\n", - " d,a,b=euclid(u,N)\n", - " if d==1:\n", - " return a\n", - " else:\n", - " raise ArithmeticError('Common factor is '+str(d))\n", - "\n", - "def two_p(x,y,a,b,N):\n", - " Lu=(3*x**2+a) % N\n", - " # print(Lu)\n", - " Lb=mod_inv(2*y,N)\n", - " # print(Lb)\n", - " L=Lu*Lb % N\n", - " x_two=(L*L-2*x) % N\n", - " y_two=(L*(x-x_two)-y) %N\n", - " return x_two,y_two\n", - "\n", - "def sum_p(x1,y1,x2,y2,a,b,N):\n", - " Lu=(y2-y1) % N\n", - " Lb=mod_inv(x2-x1,N)\n", - " L=(Lu*Lb) % N\n", - " x_sum=(L*L-x1-x2) %N\n", - " y_sum=(L*(x1-x_sum)-y1) %N\n", - " return x_sum,y_sum\n", - " \n", - "def exp_p(x,y,a,b,m,N):\n", - " sx,sy=x,y\n", - " first=True\n", - " while m>0:\n", - " if m%2==1:\n", - " if first:\n", - " xm,ym=sx,sy\n", - " first=False\n", - " else:\n", - " xm,ym=sum_p(xm,ym,sx,sy,a,b,N)\n", - " sx,sy=two_p(sx,sy,a,b,N)\n", - " m=m//2\n", - " return xm,ym\n", - "\n", - "#def mexp(a,x,N):\n", - " # m,s=1,a\n", - " # while x>0:\n", - " # if x % 2 ==1:\n", - " # m=((m*s) % N)\n", - " # s=((s*s) % N)\n", - " # x=x//2\n", - " # return m\n", - "\n", - "def ecm_trial(N,arange=50,krange=30):\n", - " for a in range(-arange,arange):\n", - " xm,ym=0,1\n", - " print(a) \n", - " for k in range(2,krange):\n", - " try:\n", - " xm,ym=exp_p(xm,ym,a,1,k,N)\n", - " except ArithmeticError:\n", - " print('try the following: a=',a,' and k=',k)\n", - " break\n", - "\n", - " \n", - " \n", - "#N=149185656432189838133\n", - "#ecm_trial(N,arange=20,krange=10000)\n", - "N=2**128+1\n", - "#ecm_trial(N,arange=100,krange=10000)\n", - "#xm,ym=exp_p(0,1,-91,1,factorial(7883),N)\n", - " \n", - " \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-100\n", - "-99\n", - "-98\n", - "-97\n", - "-96\n", - "-95\n", - "-94\n", - "-93\n", - "-92\n", - "-91\n", - "try the following: a= -91 and k= 7883\n", - "-90\n", - "-89\n", - "-88\n", - "-87\n", - "-86\n", - "-85\n", - "-84\n", - "-83\n", - "-82\n", - "-81\n", - "-80\n", - "-79\n", - "-78\n", - "-77\n", - "-76\n", - "-75\n", - "-74\n", - "-73\n", - "-72\n", - "-71\n", - "-70\n", - "-69\n", - "-68\n", - "-67\n", - "-66\n", - "-65\n", - "-64\n", - "-63\n", - "-62\n", - "-61\n", - "-60\n", - "-59\n", - "-58\n", - "-57\n", - "-56\n", - "-55\n", - "-54\n", - "-53\n", - "-52\n", - "-51\n", - "-50\n", - "-49\n", - "-48\n", - "-47\n", - "-46\n", - "-45\n", - "-44\n", - "-43\n", - "-42\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mecm_trial\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mU\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m100\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mkrange\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", - "\u001b[0;32m\u001b[0m in \u001b[0;36mecm_trial\u001b[0;34m(N, arange, krange)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mkrange\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 97\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 98\u001b[0;31m \u001b[0mxm\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mym\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mexp_p\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxm\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mym\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 99\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mArithmeticError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'try the following: a='\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m' and k='\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mexp_p\u001b[0;34m(x, y, a, b, m, N)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0mxm\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mym\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msum_p\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxm\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mym\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msy\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 79\u001b[0;31m \u001b[0msx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msy\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtwo_p\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msy\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 80\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m//\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mxm\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mym\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mtwo_p\u001b[0;34m(x, y, a, b, N)\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0mLu\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;31m# print(Lu)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 54\u001b[0;31m \u001b[0mLb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmod_inv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 55\u001b[0m \u001b[0;31m# print(Lb)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mLu\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mLb\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mmod_inv\u001b[0;34m(u, N)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 44\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mmod_inv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 45\u001b[0;31m \u001b[0md\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0meuclid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mu\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 46\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "ecm_trial(U,arange=100,krange=10000)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "1" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mexp(11,V-1,V)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.6.4" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}