

Ruby での

[code]

    (0..(n ** (1.0 / k)).to_i).each{|i| ... }
    
[/code]

の計算をPARI で行おうとしています。  
k 乗したらn になるあたりの **整数** まで計算させたいのですが、

[code]

    for (i=0, sqrtint(n),
    for (i=0, sqrtint(sqrtint(n) + 1),
    
[/code]

のようなコードしか思い浮かびません。  
この方法では、一般のk のときではうまくいきません。  
一般のk でもうまくいく方法を教えてください。

P.S.

[code]

    for (i=0, sqrtint(n),
    for (i=0, sqrtint(sqrtint(n) + 1),
    
[/code]

を例えば、

[code]

    for (i=0, n^(1.0/2)の整数部分,
    for (i=0, n^(1.0/4)の整数部分,
    
[/code]

みたいなコードにしたいのですが、どうすればいいですか？

私が直面している問題のコードです。  
(n+1)^(1.0/2) にかえると動かなくなります。

[code]

    {a(n)=local(CF=1+x*O(x^n), M=sqrtint(n+1)); for(k=0, M, CF=1/(1-x^((M-k+1)^2)*CF)); polcoeff(CF, n, x)}
    for(n=0, 55, print1(a(n), ", "))
    
[/code]

こんなエラーが出ます。

[code]

      ***   at top-level: for(n=0,55,print1(a(n),", "))
      ***                                   ^-----------
      ***   in function a: ...0/2));for(k=0,M,CF=1/(1-x^((M-k+1)^2)*CF));po
      ***                                              ^--------------------
      *** _^_: domain error in gpow [irrational exponent]: valuation != 0
      ***   Break loop: type 'break' to go back to GP prompt
    
[/code]

ちなみにM=5 にするとうまく動くが、M=5.1 とすると上記と似たエラーが出ることから、M は **整数** でないとだめみたいです。


CC BY-SA 3.0
2017-08-19T05:48:27.390
37330
2017-08-19T08:24:30.627
2017-08-19T08:24:30.627
5363
5363
question
ruby pari
PARI でk 乗根を求めるには？