init: v1.0.0
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
import math
|
||||
|
||||
n = 0xB640000002A3A6F1D603AB4FF58EC74449F2934B18EA8BEEE56EE19CD69ECF25
|
||||
p = 0xB640000002A3A6F1D603AB4FF58EC74521F2934B1A7AEEDBE56F9B27E351457D
|
||||
|
||||
p0=p%n
|
||||
n2 = int(math.sqrt(n))
|
||||
|
||||
# n = 65000549695646603732796438742359905742570406053903786389881062969044166799969
|
||||
# p = 65000549695646603732796438742359905742825358107623003571877145026864184071783
|
||||
b = [13037178982157583874, 13037178982157583875, 13037178982157583875, 13037178982157583875]
|
||||
a = [v*(p**i) % n for i,v in enumerate(b)]
|
||||
print(a)
|
||||
print(sum(a)%n)
|
||||
|
||||
# x = sum(out[i]*(p**i))
|
||||
def padic(x):
|
||||
m = p % n
|
||||
print(m)
|
||||
b=[]
|
||||
while x > 0:
|
||||
b.append(x%m)
|
||||
x = x // m
|
||||
return b
|
||||
print(padic(n))
|
||||
|
||||
print("----------")
|
||||
for m in [n*(n//4+n2+i) for i in range(1,10)]:
|
||||
print(padic(m))
|
||||
print("")
|
||||
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import math
|
||||
n = 0xB640000002A3A6F1D603AB4FF58EC74449F2934B18EA8BEEE56EE19CD69ECF25
|
||||
p = 0xB640000002A3A6F1D603AB4FF58EC74521F2934B1A7AEEDBE56F9B27E351457D
|
||||
# n = 65000549695646603732796438742359905742570406053903786389881062969044166799969
|
||||
# p = 65000549695646603732796438742359905742825358107623003571877145026864184071783
|
||||
sqrt_n = int( math.sqrt(n))
|
||||
|
||||
def lamb(n):
|
||||
l = pow(2,(n-1)//3, n)
|
||||
l2 = l**2%n
|
||||
return min(l,l2)
|
||||
# return max(l,l2)
|
||||
|
||||
def norm(a,b):
|
||||
return int(math.sqrt(a**2 + b**2))
|
||||
|
||||
l = lamb(n)
|
||||
print("lambda=",l)
|
||||
print("lambda^2=",l**2%n)
|
||||
print("")
|
||||
# eta = pow(p-2, 2*(p-1)//3,p)
|
||||
# print("eta = ", hex(eta))
|
||||
# print("eta^2 = ", hex(eta**2%p))
|
||||
s = [1,0]
|
||||
t = [0,1]
|
||||
r = [n,l]
|
||||
|
||||
while r[-1] > 1:
|
||||
d = r[-2] // r[-1]
|
||||
r.append(r[-2] - r[-1]*d)
|
||||
s.append(s[-2] - s[-1]*d)
|
||||
t.append(t[-2] - t[-1]*d)
|
||||
|
||||
d = r[-2] // r[-1]
|
||||
r.append(r[-2] - r[-1]*d)
|
||||
s.append(s[-2] - s[-1]*d)
|
||||
t.append(t[-2] - t[-1]*d)
|
||||
# r[-1] < sqrt_n
|
||||
print("s * n + t * l = r")
|
||||
for i in range(len(s)):
|
||||
print("{} * n + {} * lambda = {}".format( s[i], t[i], r[i]))
|
||||
print("")
|
||||
|
||||
print("sqrt(n)=",sqrt_n,"\n")
|
||||
|
||||
print("norm:")
|
||||
print(norm(r[-1], t[-1]))
|
||||
print(norm(r[-2], t[-2]))
|
||||
print(norm(r[-3], t[-3]))
|
||||
print("")
|
||||
|
||||
print("v1,v2:")
|
||||
for i in range(len(s)):
|
||||
print(r[i], -t[i], "\n==>", norm(r[i], t[i]), r[i] < sqrt_n)
|
||||
print("")
|
||||
# print(r[-1], -t[-1])
|
||||
# print(r[-2], -t[-2])
|
||||
# print(r[-3], -t[-3])
|
||||
# print(r[-2]*t[-3]-r[-3]*t[-2]),
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env sage
|
||||
|
||||
from sage.all import *
|
||||
|
||||
n = 0xB640000002A3A6F1D603AB4FF58EC74449F2934B18EA8BEEE56EE19CD69ECF25
|
||||
p = 0xB640000002A3A6F1D603AB4FF58EC74521F2934B1A7AEEDBE56F9B27E351457D
|
||||
# n = 65000549695646603732796438742359905742570406053903786389881062969044166799969
|
||||
# p = 65000549695646603732796438742359905742825358107623003571877145026864184071783
|
||||
# p_inv = pow(p, n - 2, n)
|
||||
# a = matrix(ZZ, 4, 4, [
|
||||
# [n, 0, 0, 0],
|
||||
# [0, p, -1, 0],
|
||||
# [0, 0, p, -1],
|
||||
# [0, 0, 0, n],
|
||||
# [n - 1, p_inv, 0, 0],
|
||||
# [n - 2, p_inv, p_inv ** 2 % n, 0],
|
||||
# [n - 3, p_inv, p_inv ** 2 % n, p_inv ** 3 % n]
|
||||
# ])
|
||||
# print(a.BKZ())
|
||||
x = 0x600000000058F98A
|
||||
t = 6*x*x+1
|
||||
r = p+1-t
|
||||
# x = 6518589491078791937
|
||||
v = [[x + 1, x, x, -2 * x],[2 * x + 1, -x, -(x + 1), -x],[2 * x, 2 * x + 1, 2 * x + 1, 2 * x + 1],[x - 1, 4 * x + 2, -(2 * x - 1), x - 1]]
|
||||
mv = matrix(ZZ, 4,4,v)
|
||||
print(mv.det())
|
||||
print()
|
||||
print(-3*r)
|
||||
for l in v:
|
||||
print("bigFromBase10(\"{}\"),bigFromBase10(\"{}\"),bigFromBase10(\"{}\"),bigFromBase10(\"{}\")".format(l[0],l[1],l[2],l[3]))
|
||||
# a = [v * (p ** i) % n for i, v in enumerate(l)]
|
||||
# print(sum(a) % n)
|
||||
print(2*x*x+3*x+1, 12*x*x*x+8*x*x+x, 6*x*x*x+4*x*x+x, -2*x*x-x)
|
||||
Reference in New Issue
Block a user