如何在 bnfinit() 中构造字段?
How to construct fields in bnfinit()?
我是 PARI/GP 的新手,正在学习不同的数字字段。我正在尝试使用 bnfinit
(第 23 个分圆场)构造场 k = Q(\zeta_23)
到 运行 以下脚本:
v=[]; w=[]; j=0; l=0;
forprime(p=29, 100000, {
if(p%46==1, j++; if(#bnfisintnorm(k,p)>0,l++;w=[p];v=concat(v,w)))
});
print("Up to 100000 there are ",j," primes congruent to 1 mod 46 and ",l," are norms of principal ideals")
运行 进入 GP 给出了这个错误,
<=1,j++;if(#bnfisintnorm(k,p)>0,l++;w=[p];v=concat(v,w))));print("Up to 100000 there are ",j," primes congruent to 1 mod 46 and ",l," are norms of principal ideals")
*** at top-level: ...00000,if(p%46==1,j++;if(#bnfisintnorm(k,p)>0,
*** ^--------------------
*** bnfisintnorm: incorrect type in checknf [please apply nfinit()] (t_POL).
(18:29) gp >
这应该找到素数 p,使得域 K 中存在代数整数,范数为 p。
有什么帮助吗?谢谢
您可以像k = bnfinit(polcyclo(23))
一样定义您想要的数字字段。所以你的代码会输出:
gp> Up to 100000 there are 429 primes congruent to 1 mod 46 and 141 are norms of principal ideals
希望对您有帮助。
我是 PARI/GP 的新手,正在学习不同的数字字段。我正在尝试使用 bnfinit
(第 23 个分圆场)构造场 k = Q(\zeta_23)
到 运行 以下脚本:
v=[]; w=[]; j=0; l=0;
forprime(p=29, 100000, {
if(p%46==1, j++; if(#bnfisintnorm(k,p)>0,l++;w=[p];v=concat(v,w)))
});
print("Up to 100000 there are ",j," primes congruent to 1 mod 46 and ",l," are norms of principal ideals")
运行 进入 GP 给出了这个错误,
<=1,j++;if(#bnfisintnorm(k,p)>0,l++;w=[p];v=concat(v,w))));print("Up to 100000 there are ",j," primes congruent to 1 mod 46 and ",l," are norms of principal ideals")
*** at top-level: ...00000,if(p%46==1,j++;if(#bnfisintnorm(k,p)>0,
*** ^--------------------
*** bnfisintnorm: incorrect type in checknf [please apply nfinit()] (t_POL).
(18:29) gp >
这应该找到素数 p,使得域 K 中存在代数整数,范数为 p。
有什么帮助吗?谢谢
您可以像k = bnfinit(polcyclo(23))
一样定义您想要的数字字段。所以你的代码会输出:
gp> Up to 100000 there are 429 primes congruent to 1 mod 46 and 141 are norms of principal ideals
希望对您有帮助。