PARI“展示所有可能性”是什么意思?

问题描述 投票:0回答:1

我正在运行这段代码,不幸的是我不知道为什么它问我是或否问题。

 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]])))));
  }

sage pari-gp
1个回答
0
投票

您看到的消息

Display all ... possibilities? (y or n)
是由
readline
库生成的,为
gp
二进制文件提供行编辑。更准确地说,它是按
<TAB>
键时触发的完成机制。大概您使用
<TAB>
字符来缩进代码,然后将其复制粘贴到
gp
终端中。

尝试在

<TAB>
提示下输入
gp
,您将看到上述消息,因为
gp
试图在没有任何上下文的情况下完成表达式,因此有很多可能性(所有内置函数和用户函数,以及所有变量和所有运算符)。由于无法在一个结果屏幕中写下所有可能性,因此系统会询问您是否真的要显示所有可能性;通过输入
y
,您将一次一屏地看到可能的完成情况。

例如,与

d<TAB>

 进行比较,您将看到所有完成情况
作者:
d
(大约 24 个,这次毫无疑问,因为它适合一个屏幕。

附注原始程序的最后几行有一个拼写错误:

istput

而不是
listput

© www.soinside.com 2019 - 2024. All rights reserved.