我正在运行这段代码,不幸的是我不知道为什么它问我是或否问题。
Normu(D) = my(k = bnfinit(y^2-D, 1), u = bnfunits(k)[1][1]); nfeltnorm(k, u);
{
L = List();
forprime (q = 5, 100,
if (q%8==5,
N2 = Normu(q);
forprime(p = q+1, 100,
if(p%8==5,
N1 = Normu(2*p);
N3 = Normu(2*p*q);
istput(L, [[q,p], [N1, N2, N3]])))));
}
不幸的是,我无法理解 PARI 的“显示所有可能性”的含义,并要求我输入(y 或 n)。
我尝试更改命令,并更改默认的 PARI 大小,但没有成功。我知道问题不在于上面定义的函数。我感谢你的帮助。
更新:我将所有代码写在一行中,它正在工作,但它不考虑内部“if” 。我不清楚为什么它应该适用于此更改。
Normu(D) = my(k = bnfinit(y^2-D, 1), u = bnfunits(k)[1][1]); nfeltnorm(k, u);
{
L = List();
forprime (q = 5, 100, if (q%8==5, N2 = Normu(q); forprime(p = q+1, 100, if(p%8==5, N1 = Normu(2*p); N3 = Normu(2*p*q); listput(L,[[q,p], [N1, N2, N3]])))));
}
您看到的消息
Display all ... possibilities? (y or n)
是由readline
库生成的,为gp
二进制文件提供行编辑。更准确地说,它是按 <TAB>
键时触发的完成机制。大概您使用 <TAB>
字符来缩进代码,然后将其复制粘贴到 gp
终端中。
尝试在
<TAB>
提示下输入 gp
,您将看到上述消息,因为 gp
试图在没有任何上下文的情况下完成表达式,因此有很多可能性(所有内置函数和用户函数,以及所有变量和所有运算符)。由于无法在一个结果屏幕中写下所有可能性,因此系统会询问您是否真的要显示所有可能性;通过输入 y
,您将一次一屏地看到可能的完成情况。
例如,与 d<TAB>
进行比较,您将看到所有完成情况 作者:
d
(大约 24 个,这次毫无疑问,因为它适合一个屏幕。附注原始程序的最后几行有一个拼写错误:
istput
而不是
listput
。