据我正确理解,
GF(Integer)
用于声明一个有限域,例如可以用于声明椭圆曲线(这就是我想要做的)。GF(12092909088188237225393433017559174875623137613219078327682045681675023350320878590139619158941453632724570634378148379186020109423506557278061404249513976103803771139954000579995199902828634263992330574392218791796266323480026479977659504287064359209036331389750395884727865805793574046154686347934603866375769645860851559671200189106819576945533990794197558448169154800495832790107673176422796675256499746815795625450299074794144048526198146639914021389804755241528331708078456200260597013666698340612446162656471808349941941036242500801205678881620332591272087635015318077794473705628671572713897714140224506269671672327501746902155512482220944778556374239955378577691861316356789180373125486706142640931817968722234080019888921817141837856053156323850750365255047978587780912486395587404967932864588640269696396456375831408999624015664858331115319294937654521467886227817728683577618500683880562054279134724944161)
似乎需要太多时间才可行?使用有限域而不使用
GF()
来声明虚拟椭圆曲线的解决方法是什么?
我想要做的底层操作是
E_extend()
指向新曲线的一个点。我不知道公式,也不知道任何允许在 SageMath 之外执行此操作的语言库。
这是有限域的默认构造函数的不幸后果。因为您的域是具有大特征的素数域的 12 次扩展,所以 Sage 花费了大量的时间来寻找具有特殊属性的 12 次不可约多项式(在 Sage 中称为“伪康威多项式”)。
解决方法是自己选择模数,例如:
n = 12092909088188237225393433017559174875623137613219078327682045681675023350320878590139619158941453632724570634378148379186020109423506557278061404249513976103803771139954000579995199902828634263992330574392218791796266323480026479977659504287064359209036331389750395884727865805793574046154686347934603866375769645860851559671200189106819576945533990794197558448169154800495832790107673176422796675256499746815795625450299074794144048526198146639914021389804755241528331708078456200260597013666698340612446162656471808349941941036242500801205678881620332591272087635015318077794473705628671572713897714140224506269671672327501746902155512482220944778556374239955378577691861316356789180373125486706142640931817968722234080019888921817141837856053156323850750365255047978587780912486395587404967932864588640269696396456375831408999624015664858331115319294937654521467886227817728683577618500683880562054279134724944161
k = GF(n.prime_divisors()[0])
m = k['z'].irreducible_element(12)
K.<z> = k.extension(m)