0

有没有办法将 for 循环嵌套在 Pari/GP (2.7.6) 中的其他 for 循环中,因为总是出现以下错误:

***   at top-level: read("prog.txt")
  ***                 ^----------------
  *** read: sorry, embedded braces (in parser) is not yet implemented.

代码:

(12:14) gp > n = 12
%12 = 12
(12:14) gp > k = 10
%13 = 10
(12:14) gp > g = [1..10]
%14 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


{
  forprime(p = 1, 16,
  rn = n%p
  rk = k%p
{
    for(i=1, #g,
        if( (rn*(g[i]+rk)+1)%p!=0,
        h = concat(h, g[i])
}
  g = h
}

感谢帮助。我发布并从中获取代码的问题被删除了,所以我有点卡在这一点上。

4

1 回答 1

0

大括号的含义与 C# 或许多其他编程语言中的含义不同。他们不开始/结束一个块。

在 PARI 中,多个语句用分号连接并包含在函数的参数括号内。特殊功能包括while,forif

例如:

 my(s=7);forprime(p=1, 7, s*=3; for(i=1, p, s+=p^2); s+=6); s

forprime循环中包含三个语句,用分号分隔,其中一个是另一个循环。

另一方面,现在大括号 {} 只允许您编写超过一行的程序。通常,当到达行尾时,PARI 会尝试解释该行上的所有内容。但是如果在 { 和 } 之间,它就不会这样做,所以你永远不需要超过一对。

在您的示例中,您需要删除内部 {} 并在语句之间添加一些分号。

于 2019-08-31T19:07:29.493 回答