Ludic numbers: Difference between revisions

adding 2nd version
m (→‎{{header|Pascal}}: speedup 4.4s -> 3 s. C-version is still at 1.25s for n= 100'000)
(adding 2nd version)
Line 1,279:
=={{header|PARI/GP}}==
{{Works with|PARI/GP|2.7.4 and above}}
 
===Version #1. Creating vector of ludic numbers' flags, where the index of each flag=1 is the ludic number.===
 
<lang PARI/GP>
Line 1,312 ⟶ 1,314:
}
</lang>
{{Output}}
<pre>
The first 25 Ludic numbers:
1 2 3 5 7 11 13 17 23 25 29 37 41 43 47 53 61 67 71 77 83 89 91 97 107
 
Ludic numbers below 1000: 142
 
Ludic numbers 2000 to 2005:
21475 21481 21487 21493 21503 21511
 
Ludic Triplets below 250:
(1 3 7) (5 7 11) (11 13 17) (23 25 29) (41 43 47) (173 175 179) (221 223 227) (233 235 239)
</pre>
 
===Version #2. Creating vector of ludic numbers.===
Upgraded script from [http://oeis.org/A003309 A003309] to meet task requirements.
 
<lang PARI/GP>
\\ Creating Vl - Vector of ludic numbers.
ludic2(maxn)={my(Vw=vector(maxn, x, x+1),Vl=Vec([1]),vwn=#Vw,i);
while(vwn>0, i=Vw[1]; Vl=concat(Vl,[i]);
Vw=vector((vwn*(i-1))\i,x,Vw[(x*i+i-2)\(i-1)]); vwn=#Vw
); return(Vl);
}
{
\\ Required tests:
my(Vr,L=List(),k=0,maxn=22000,vrs,vi);
Vr=ludic2(maxn); vrs=#Vr;
print("The first 25 Ludic numbers: ");
for(i=1,25, print1(Vr[i]," "));
print("");print("");
k=0;
for(i=1,vrs, if(Vr[i]<1000, k++, break));
print("Ludic numbers below 1000: ",k);
print("");
k=0;
print("Ludic numbers 2000 to 2005: ");
for(i=2000,2005, print1(Vr[i]," "));
print("");print("");
print("Ludic Triplets below 250: ");
for(i=1,vrs, vi=Vr[i]; if(i==1,print1("(",vi," ",vi+2," ",vi+6,") "); next); if(vi+6<250,if(Vr[i+1]==vi+2&&Vr[i+2]==vi+6, print1("(",vi," ",vi+2," ",vi+6,") "))));
}
</lang>
 
{{Output}}
<pre>
Anonymous user