Cyclops numbers: Difference between revisions

→‎{{header|REXX}}: added the computer programming language REXX.
(Added Wren)
(→‎{{header|REXX}}: added the computer programming language REXX.)
Line 103:
 
First palindromic prime cyclops number > 10,000,000: 114,808,411 - at (zero based) index: 66</pre>
 
=={{header|REXX}}==
<lang rexx>/*REXX pprogram finds and displays the first fifty cyclops numbers, cyclops primes,*/
/*─────────────────────────────── blind cyclops primes, and palindromic cyclops primes.*/
parse arg n cols . /*obtain optional argument from the CL.*/
if n=='' | n=="," then n= 50 /*Not specified? Then use the default.*/
if cols=='' | cols=="," then cols= 10 /* " " " " " " */
call genP /*build array of semaphores for primes.*/
w= max(10, length( commas(@.#) ) ) /*max width of a number in any column. */
first= ' the first '
isPri= 0; isBli= 0; isPal= 0; call 0 first commas(n) " cyclops numbers"
isPri= 1; isBli= 0; isPal= 0; call 0 first commas(n) " prime cyclops numbers"
isPri= 1; isBli= 1; isPal= 0; call 0 first commas(n) " blind prime cyclops numbers"
isPri= 1; isBli= 0; isPal= 1; call 0 first commas(n) " palindromic prime cyclops numbers"
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
commas: parse arg ?; do jc=length(?)-3 to 1 by -3; ?=insert(',', ?, jc); end; return ?
/*──────────────────────────────────────────────────────────────────────────────────────*/
0: parse arg title /*get the title of this output section.*/
say ' index │'center(title, 1 + cols*(w+1) )
say '───────┼'center("" , 1 + cols*(w+1), '─')
finds= 0; idx= 1 /*define # of a type of cyclops # & idx*/
$= /*$: list of the numbers found (so far)*/
do j=101 until finds== n; L= length(j) /*$: list of the numbers found (so far)*/
if L//2==0 then iterate /*Not a cyclops # (odd length)? Skip.*/
z= pos(0, j); if z\==(L+1)%2 then iterate /* " " " " (zero in mid)? " */
if pos(0, j, z+1)>0 then iterate /* " " " " (has two 0's)? " */
if isPri then if \!.j then iterate /*Need a cyclops prime? Then skip.*/
if isBli then do; ?= space(translate(j,,0), 0) /*Need a blind cyclops prime ? */
if \!.? then iterate /*Not a blind cyclops prime? Then skip.*/
end
if isPal then do; r= reverse(j) /*Need a palindromic cyclops prime? */
if r\==j then iterate /*Cyclops number not palindromic? Skip.*/
if \!.r then iterate /*Cyclops palindromic not prime? Skip.*/
end
finds= finds + 1 /*bump the number of palindromic primes*/
if cols<0 then iterate /*Build the list (to be shown later)? */
$= $ right( commas(j), w) /*add a palindromic prime ──► $ list.*/
if finds//cols\==0 then iterate /*have we populated a line of output? */
say center(idx, 7)'│' substr($, 2); $= /*display what we have so far (cols). */
idx= idx + cols /*bump the index count for the output*/
end /*j*/
 
if $\=='' then say center(idx, 7)"│" substr($, 2) /*possible show residual output.*/
say '───────┴'center("" , 1 + cols*(w+1), '─'); say; say
return
/*──────────────────────────────────────────────────────────────────────────────────────*/
genP: !.= 0; hip= 8000000 - 1 /*placeholders for primes (semaphores).*/
@.1=2; @.2=3; @.3=5; @.4=7; @.5=11 /*define some low primes. */
!.2=1; !.3=1; !.5=1; !.7=1; !.11=1 /* " " " " flags. */
#=5; s.#= @.# **2 /*number of primes so far; prime². */
do j=@.#+2 by 2 to hip /*find odd primes from here on. */
parse var j '' -1 _; if _==5 then iterate /*J divisible by 5? (right dig)*/
if j// 3==0 then iterate /*" " " 3? */
if j// 7==0 then iterate /*" " " 7? */
do k=5 while s.k<=j /* [↓] divide by the known odd primes.*/
if j // @.k == 0 then iterate j /*Is J ÷ X? Then not prime. ___ */
end /*k*/ /* [↑] only process numbers ≤ √ J */
#= #+1; @.#= j; s.#= j*j; !.j= 1 /*bump # of Ps; assign next P; P²; P# */
end /*j*/; return</lang>
{{out|output|text=&nbsp; when using the default inputs:}}
<pre>
index │ the first 50 cyclops numbers
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 101 102 103 104 105 106 107 108 109 201
11 │ 202 203 204 205 206 207 208 209 301 302
21 │ 303 304 305 306 307 308 309 401 402 403
31 │ 404 405 406 407 408 409 501 502 503 504
41 │ 505 506 507 508 509 601 602 603 604 605
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────
 
 
index │ the first 50 prime cyclops numbers
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 101 103 107 109 307 401 409 503 509 601
11 │ 607 701 709 809 907 11,027 11,047 11,057 11,059 11,069
21 │ 11,071 11,083 11,087 11,093 12,011 12,037 12,041 12,043 12,049 12,071
31 │ 12,073 12,097 13,033 13,037 13,043 13,049 13,063 13,093 13,099 14,011
41 │ 14,029 14,033 14,051 14,057 14,071 14,081 14,083 14,087 15,013 15,017
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────
 
 
index │ the first 50 blind prime cyclops numbers
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 101 103 107 109 307 401 503 509 601 607
11 │ 701 709 809 907 11,071 11,087 11,093 12,037 12,049 12,097
21 │ 13,099 14,029 14,033 14,051 14,071 14,081 14,083 14,087 15,031 15,053
31 │ 15,083 16,057 16,063 16,067 16,069 16,097 17,021 17,033 17,041 17,047
41 │ 17,053 17,077 18,047 18,061 18,077 18,089 19,013 19,031 19,051 19,073
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────
 
 
index │ the first 50 palindromic prime cyclops numbers
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ 101 16,061 31,013 35,053 38,083 73,037 74,047 91,019 94,049 1,120,211
11 │ 1,150,511 1,160,611 1,180,811 1,190,911 1,250,521 1,280,821 1,360,631 1,390,931 1,490,941 1,520,251
21 │ 1,550,551 1,580,851 1,630,361 1,640,461 1,660,661 1,670,761 1,730,371 1,820,281 1,880,881 1,930,391
31 │ 1,970,791 3,140,413 3,160,613 3,260,623 3,310,133 3,380,833 3,460,643 3,470,743 3,590,953 3,670,763
41 │ 3,680,863 3,970,793 7,190,917 7,250,527 7,310,137 7,540,457 7,630,367 7,690,967 7,750,577 7,820,287
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────
</pre>
 
=={{header|Wren}}==