|
D.11.2.14 Atkin
Procedure from library atkins.lib (see atkins_lib).
- Return:
- 1, if N is prime,
-1, if N is not prime,
0, if the algorithm is not applicable, since there are too little discriminants
- Assume:
- N is coprime to 6 and different from 1
- Note:
- K/2 is input for the procedure "disc",
K is input for the procedure "HilbertClassPolynomial",
B describes the number of recursions being calculated.
The basis of the algorithm is the following theorem:
Let N be an integer coprime to 6 and different from 1 and E be an
ellipic curve modulo N. Assume that we know an integer m and a
point P of E(Z/NZ) satisfying the following conditions.
(1) There exists a prime divisor q of m such that q>(4-th root(N)+1)^2.
(2) m*P=O(E)=(0:1:0).
(3) (m/q)*P=(x:y:t) with t element of (Z/NZ)*.
Then N is prime.
Example:
| LIB "atkins.lib";
ring R = 0,x,dp;
printlevel=1;
Atkin(7691,100,5);
==> Setze i=0, n=0 und N(i)=N(0)=7691.
==> pause>Liste H der moeglichen geeigneten Diskriminanten wird berechnet.
==> H=-3,-4,-7,-8,-11,-12,-15,-16,-19,-20,-23,-24,-27,-28,-31,-32,-35,-36,-39\
,-40,-43,-44,-47,-48,-51,-52,-55,-56,-59,-60,-63,-64,-67,-68,-71,-72,-75,\
-76,-79,-80,-83,-84,-87,-88,-91,-92,-95,-96,-99,-100,-103,-104,-107,-108,\
-111,-112,-115,-116,-119,-120,-123,-124,-127,-128,-131,-132,-135,-136,-13\
9,-140,-143,-144,-147,-148,-151,-152,-155,-156,-159,-160,-163,-164,-167,-\
168,-171,-172,-175,-176,-179,-180,-183,-184,-187,-188,-191,-192,-195,-196\
,-199,-200
==> pause>Naechste Diskriminante D wird gewaehlt. D=-3.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-4.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-7.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-8.
==> pause>Die Loesung (x,y) der Gleichung x^2+|D|y^2=4N(0) lautet
==> [1]:
==> 54
==> [2]:
==> 59
==> pause>Die Liste L2 der moeglichen m=|E(Z/N(0)Z)| wird berechnet.
==> L2=
==> [1]:
==> 7746
==> [2]:
==> 7638
==> pause>Die Liste S der Faktoren aller moeglichen m wird berechnet.
==> S=
==> [1]:
==> [1]:
==> 7746
==> [2]:
==> [1]:
==> 3
==> [2]:
==> 2
==> [3]:
==> 1291
==> [4]:
==> 7746
==> [2]:
==> [1]:
==> 7638
==> [2]:
==> [1]:
==> 19
==> [2]:
==> 67
==> [3]:
==> 2
==> [4]:
==> 3
==> [5]:
==> 2
==> pause>Geeignetes Paar (m,q) gefunden, so dass q|m,
==> q>(4-th root(N(0))+1)^2 und q den Miller-Rabin-Test passiert.
==> m=7746,
==> q=1291
==> pause>Das Minimalpolynom T von j((D+sqr(D))/2) aus Z[X] fuer D=-8 wird be\
rechnet.
==> T=x-8000
==> pause>Setze T=T mod N(0).
==> T=x+7382
==> pause>Die Nullstelle von T modulo N(0) ist
==> [1]:
==> 309
==> pause>Waehle die Nullstelle j=309 aus und setze
==> c=j/(j-1728) mod N(0), a=-3c mod N(0), b=2c mod N(0).
==> a=2586,
==> b=5967
==> pause>g=417
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(0)=7691,
==> a=2586,
==> b=5967
==> wird gewaehlt.
==> P=(1754,3392,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(1537,7390,1),
==> P2=(4245,3785,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=2586 und b=5967 m!=|E(\
Z/N(0)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D<-4, setze a=a*g^2 mod N(0) und b=b*g^3 mod N(0).
==> a=7257,
==> b=5287,
==> k=1
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(0)=7691,
==> a=7257,
==> b=5287
==> wird gewaehlt.
==> P=(704,3085,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(0,1,0),
==> P2=(1612,5530,1)
==> pause>1. Rekursion:
==>
==> N(0)=7691 erfuellt die Bedingungen des zugrunde liegenden Satzes,
==> da P1=(0:1:0) und P2[3] aus (Z/N(0)Z)*.
==>
==> Untersuche nun, ob auch der gefundene Faktor q=1291 diese Bedingungen erf\
uellt.
==> Setze dazu i=i+1, N(1)=q=1291 und beginne den Algorithmus von vorne.
==> pause>Naechste Diskriminante D wird gewaehlt. D=-3.
==> pause>Die Loesung (x,y) der Gleichung x^2+|D|y^2=4N(1) lautet
==> [1]:
==> 67
==> [2]:
==> 15
==> pause>Die Liste L2 der moeglichen m=|E(Z/N(1)Z)| wird berechnet.
==> L2=
==> [1]:
==> 1359
==> [2]:
==> 1225
==> [3]:
==> 1348
==> [4]:
==> 1236
==> [5]:
==> 1303
==> [6]:
==> 1281
==> pause>Die Liste S der Faktoren aller moeglichen m wird berechnet.
==> S=
==> [1]:
==> [1]:
==> 1359
==> [2]:
==> [1]:
==> 151
==> [2]:
==> 3
==> [3]:
==> 1359
==> [2]:
==> [1]:
==> 1225
==> [2]:
==> [1]:
==> 5
==> [2]:
==> 7
==> [3]:
==> 1225
==> [3]:
==> [1]:
==> 1348
==> [2]:
==> [1]:
==> 337
==> [2]:
==> 2
==> [3]:
==> 1348
==> [4]:
==> [1]:
==> 1236
==> [2]:
==> [1]:
==> 103
==> [2]:
==> 3
==> [3]:
==> 2
==> [4]:
==> 1236
==> [5]:
==> [1]:
==> 1303
==> [2]:
==> [1]:
==> 1303
==> [2]:
==> 1303
==> [6]:
==> [1]:
==> 1281
==> [2]:
==> [1]:
==> 7
==> [2]:
==> 61
==> [3]:
==> 3
==> [4]:
==> 1281
==> pause>Geeignetes Paar (m,q) gefunden, so dass q|m,
==> q>(4-th root(N(1))+1)^2 und q den Miller-Rabin-Test passiert.
==> m=1359,
==> q=151
==> pause>Da D=-3, setze a=0 und b=-1.
==> pause>g=805
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=-1
==> wird gewaehlt.
==> P=(588,995,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(224,478,1),
==> P2=(305,239,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=-1 m!=|E(Z/N(1\
)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=486,
==> k=1
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=486
==> wird gewaehlt.
==> P=(151,379,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(188,279,1),
==> P2=(100,337,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=486 m!=|E(Z/N(\
1)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=57,
==> k=2
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=57
==> wird gewaehlt.
==> P=(597,269,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(781,549,1),
==> P2=(923,1121,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=57 m!=|E(Z/N(1\
)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=700,
==> k=3
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=700
==> wird gewaehlt.
==> P=(637,776,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(799,676,1),
==> P2=(909,957,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=700 m!=|E(Z/N(\
1)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=624,
==> k=4
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=624
==> wird gewaehlt.
==> P=(541,546,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(1179,204,1),
==> P2=(772,1233,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=624 m!=|E(Z/N(\
1)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=121,
==> k=5
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=1291,
==> a=0,
==> b=121
==> wird gewaehlt.
==> P=(1038,988,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(0,1,0),
==> P2=(707,725,1)
==> pause>2. Rekursion:
==>
==> N(1)=1291 erfuellt die Bedingungen des zugrunde liegenden Satzes,
==> da P1=(0:1:0) und P2[3] aus (Z/N(1)Z)*.
==>
==> Untersuche nun, ob auch der gefundene Faktor q=151 diese Bedingungen erfu\
ellt.
==> Setze dazu i=i+1, N(2)=q=151 und beginne den Algorithmus von vorne.
==> pause>1
Atkin(10000079,100,2);
==> Setze i=0, n=0 und N(i)=N(0)=10000079.
==> pause>Liste H der moeglichen geeigneten Diskriminanten wird berechnet.
==> H=-3,-4,-7,-8,-11,-12,-15,-16,-19,-20,-23,-24,-27,-28,-31,-32,-35,-36,-39\
,-40,-43,-44,-47,-48,-51,-52,-55,-56,-59,-60,-63,-64,-67,-68,-71,-72,-75,\
-76,-79,-80,-83,-84,-87,-88,-91,-92,-95,-96,-99,-100,-103,-104,-107,-108,\
-111,-112,-115,-116,-119,-120,-123,-124,-127,-128,-131,-132,-135,-136,-13\
9,-140,-143,-144,-147,-148,-151,-152,-155,-156,-159,-160,-163,-164,-167,-\
168,-171,-172,-175,-176,-179,-180,-183,-184,-187,-188,-191,-192,-195,-196\
,-199,-200
==> pause>Naechste Diskriminante D wird gewaehlt. D=-3.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-4.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-7.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-8.
==> pause>Jacobi(D,N(0))=-1
==> pause>Naechste Diskriminante D wird gewaehlt. D=-11.
==> pause>Die Loesung (x,y) der Gleichung x^2+|D|y^2=4N(0) lautet
==> [1]:
==> 4596
==> [2]:
==> 1310
==> pause>Die Liste L2 der moeglichen m=|E(Z/N(0)Z)| wird berechnet.
==> L2=
==> [1]:
==> 10004676
==> [2]:
==> 9995484
==> pause>Die Liste S der Faktoren aller moeglichen m wird berechnet.
==> S=
==> [1]:
==> [1]:
==> 10004676
==> [2]:
==> [1]:
==> 11
==> [2]:
==> 2
==> [3]:
==> 3
==> [4]:
==> 75793
==> [5]:
==> 12
==> [2]:
==> [1]:
==> 9995484
==> [2]:
==> [1]:
==> 3
==> [2]:
==> 832957
==> [3]:
==> 2
==> [4]:
==> 3
==> pause>Geeignetes Paar (m,q) gefunden, so dass q|m,
==> q>(4-th root(N(0))+1)^2 und q den Miller-Rabin-Test passiert.
==> m=10004676,
==> q=75793
==> pause>Das Minimalpolynom T von j((D+sqr(D))/2) aus Z[X] fuer D=-11 wird b\
erechnet.
==> T=x+32768
==> pause>Setze T=T mod N(0).
==> T=x+32768
==> pause>Die Nullstelle von T modulo N(0) ist
==> [1]:
==> -32768
==> pause>Waehle die Nullstelle j=-32768 aus und setze
==> c=j/(j-1728) mod N(0), a=-3c mod N(0), b=2c mod N(0).
==> a=2374784,
==> b=5083530
==> pause>g=3035792
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(0)=10000079,
==> a=2374784,
==> b=5083530
==> wird gewaehlt.
==> P=(2776172,3288655,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(6511549,5541835,1),
==> P2=(6106160,8946469,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=2374784 und b=5083530 \
m!=|E(Z/N(0)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D<-4, setze a=a*g^2 mod N(0) und b=b*g^3 mod N(0).
==> a=1185224,
==> b=3258230,
==> k=1
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(0)=10000079,
==> a=1185224,
==> b=3258230
==> wird gewaehlt.
==> P=(3401270,6866912,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(0,1,0),
==> P2=(85781,4173051,1)
==> pause>1. Rekursion:
==>
==> N(0)=10000079 erfuellt die Bedingungen des zugrunde liegenden Satzes,
==> da P1=(0:1:0) und P2[3] aus (Z/N(0)Z)*.
==>
==> Untersuche nun, ob auch der gefundene Faktor q=75793 diese Bedingungen er\
fuellt.
==> Setze dazu i=i+1, N(1)=q=75793 und beginne den Algorithmus von vorne.
==> pause>Naechste Diskriminante D wird gewaehlt. D=-3.
==> pause>Die Loesung (x,y) der Gleichung x^2+|D|y^2=4N(1) lautet
==> [1]:
==> 542
==> [2]:
==> 56
==> pause>Die Liste L2 der moeglichen m=|E(Z/N(1)Z)| wird berechnet.
==> L2=
==> [1]:
==> 76336
==> [2]:
==> 75252
==> [3]:
==> 76149
==> [4]:
==> 75439
==> [5]:
==> 75981
==> [6]:
==> 75607
==> pause>Die Liste S der Faktoren aller moeglichen m wird berechnet.
==> S=
==> [1]:
==> [1]:
==> 76336
==> [2]:
==> [1]:
==> 13
==> [2]:
==> 367
==> [3]:
==> 2
==> [4]:
==> 367
==> [2]:
==> [1]:
==> 75252
==> [2]:
==> [1]:
==> 3
==> [2]:
==> 6271
==> [3]:
==> 2
==> [4]:
==> 12
==> [3]:
==> [1]:
==> 76149
==> [2]:
==> [1]:
==> 3
==> [2]:
==> 8461
==> [3]:
==> 3
==> [4]:
==> [1]:
==> 75439
==> [2]:
==> [1]:
==> 7
==> [2]:
==> 13
==> [3]:
==> 829
==> [4]:
==> 75439
==> [5]:
==> [1]:
==> 75981
==> [2]:
==> [1]:
==> 19
==> [2]:
==> 31
==> [3]:
==> 43
==> [4]:
==> 3
==> [5]:
==> 75981
==> [6]:
==> [1]:
==> 75607
==> [2]:
==> [1]:
==> 7
==> [2]:
==> 1543
==> [3]:
==> 75607
==> pause>Geeignetes Paar (m,q) gefunden, so dass q|m,
==> q>(4-th root(N(1))+1)^2 und q den Miller-Rabin-Test passiert.
==> m=76336,
==> q=367
==> pause>Da D=-3, setze a=0 und b=-1.
==> pause>g=15675
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=75793,
==> a=0,
==> b=-1
==> wird gewaehlt.
==> P=(6739,21159,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(58298,43364,1),
==> P2=(75424,29911,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=-1 m!=|E(Z/N(1\
)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=60118,
==> k=1
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=75793,
==> a=0,
==> b=60118
==> wird gewaehlt.
==> P=(44443,30044,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(57592,64619,1),
==> P2=(65526,31623,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=60118 m!=|E(Z/\
N(1)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=15281,
==> k=2
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=75793,
==> a=0,
==> b=15281
==> wird gewaehlt.
==> P=(46843,52174,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(49909,3260,1),
==> P2=(37869,50319,1)
==> pause>Da P1!=(0:1:0), ist fuer die Koeffizienten a=0 und b=15281 m!=|E(Z/\
N(1)Z)|.
==> Waehle daher neue Koeffizienten a und b.
==> pause>Da D=-3, setze b=b*g mod N(1).
==> a=0,
==> b=23795,
==> k=3
==> pause>Ein zufaelliger Punkt P auf der Elliptischen Kurve
==> mit der Gleichung y^2=x^3+ax+b fuer
==> N(1)=75793,
==> a=0,
==> b=23795
==> wird gewaehlt.
==> P=(32297,22617,1)
==> pause>Die Punkte P2=(m/q)*P und P1=q*P2 auf der Kurve werden berechnet.
==> P1=(0,1,0),
==> P2=(17725,53258,1)
==> pause>2. Rekursion:
==>
==> N(1)=75793 erfuellt die Bedingungen des zugrunde liegenden Satzes,
==> da P1=(0:1:0) und P2[3] aus (Z/N(1)Z)*.
==>
==> Untersuche nun, ob auch der gefundene Faktor q=367 diese Bedingungen erfu\
ellt.
==> Setze dazu i=i+1, N(2)=q=367 und beginne den Algorithmus von vorne.
==> pause>1
==> >
|
|