Ruby での

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

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

for (i=0, sqrtint(n),
for (i=0, sqrtint(sqrtint(n) + 1),

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

P.S.

for (i=0, sqrtint(n),
for (i=0, sqrtint(sqrtint(n) + 1),

を例えば、

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

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

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

{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), ", "))

こんなエラーが出ます。

  ***   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

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