Almost prime: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add PL/I) |
|||
Line 2,629: | Line 2,629: | ||
32, 48, 72, 80, 108, 112, 120, 162, 168, 176 |
32, 48, 72, 80, 108, 112, 120, 162, 168, 176 |
||
</pre> |
</pre> |
||
=={{header|PL/I}}== |
|||
{{trans|C}} |
|||
<lang pli>almost_prime: procedure options(main); |
|||
kprime: procedure(nn, k) returns(bit); |
|||
declare (n, nn, k, p, f) fixed; |
|||
f = 0; |
|||
n = nn; |
|||
do p=2 repeat(p+1) while(f<k & p*p <= n); |
|||
do n=n repeat(n/p) while(mod(n,p) = 0); |
|||
f = f+1; |
|||
end; |
|||
end; |
|||
return(f + (n>1) = k); |
|||
end kprime; |
|||
declare (i, c, k) fixed; |
|||
do k=1 to 5; |
|||
put edit('k = ',k,':') (A,F(1),A); |
|||
c = 0; |
|||
do i=2 repeat(i+1) while(c<10); |
|||
if kprime(i,k) then do; |
|||
put edit(i) (F(4)); |
|||
c = c+1; |
|||
end; |
|||
end; |
|||
put skip; |
|||
end; |
|||
end almost_prime;</lang> |
|||
{{out}} |
|||
<pre>k = 1: 2 3 5 7 11 13 17 19 23 29 |
|||
k = 2: 4 6 9 10 14 15 21 22 25 26 |
|||
k = 3: 8 12 18 20 27 28 30 42 44 45 |
|||
k = 4: 16 24 36 40 54 56 60 81 84 88 |
|||
k = 5: 32 48 72 80 108 112 120 162 168 176</pre> |
|||
=={{header|PL/M}}== |
=={{header|PL/M}}== |