Wilson primes of order n: Difference between revisions

m
→‎{{header|REXX}}: used an IF/THEN/ELSE statement, changed some comments.
m (→‎{{header|REXX}}: changed a comment.)
m (→‎{{header|REXX}}: used an IF/THEN/ELSE statement, changed some comments.)
Line 247:
<lang rexx>/*REXX program finds and displays Wilson primes: a prime P such that P**2 divides:*/
/*────────────────── (n-1)! * (P-n)! - (-1)**n where n is 1 ──◄ 11, and P < 18.*/
parse arg oLO oHI hip . /*obtain optional argumentsargument from the CL.*/
if oLO=='' | oLO=="," then oLO= 1 /*Not specified? Then use the default.*/
if oHI=='' | oHI=="," then oHI= 11 /* " " " " " " */
Line 256:
parse value bignum 'E0' with ex 'E' ex . /*obtain possible exponent of factorial*/
numeric digits (max(9, ex+2) ) /*calculate max # of dec. digits needed*/
call facts hip /*gocalculate & calculate asome number ofmemoized factorials.*/
title= ' Wilson primes P of order ' oLO " ──► " oHI', where P < ' commas(hip)
w= length(title) + 1 /*width of columns of possible numbers.*/
say ' order │'center(title, w )
say '───────┼'center("" , w, '─')
do n=oLO to oHI; pom= -1**n /*search forprecalculate WilsonPOM primes of(Plus orderOr Minus) N.(±)*/
nmf= !(n-1); pom = -1**n /*precalculate a factorial and " +|- a particular factorial.*/
if n==1 then lim= 103 /*limit to known primes for 1st order. */
$=
else lim= #; if n==1 then lim= 103 /*limit to known" primes for 1st order." those " " orders > 1 */
$= do j=1 for lim; p= @.j /*search$: through allowable primes.a line (output) of Wilson primes.*/
x= nmf *do !(p-n)j=1 -for pomlim; p= @.j /*calculatesearch through (n-1)!allowable primes. * (p-n)! - (-1)**n */
if x//sq.j \==0 nmf * then!(p-n) iterate - pom /*is X ÷ prime squared? No, then skip./*/calculate (n-1)! * (p-n)! - /(-1)**n ◄■■■■■■■ the filter.*/
$= $ if 'x//sq.j '\==0 commas(p) then iterate /*is X ÷ prime squared? No, then /skip.*add/ a commatized prime ──► $/* ◄■■■■■■■ the listfilter.*/
$= $ ' ' commas(p) /*add a commatized prime ──► $ list.*/
end /*p*/
 
if $=='' then $= ' (none found within the range specified)'
say center(n, 7)'│' substr($, 2) /*display what Wilson primes we found. */
end /*n*/
say '───────┴'center("" , w, '─')
exit 0 /*stick a fork in it, we're all done. */