Primes whose first and last number is 3: Difference between revisions

→‎{{header|Wren}}: Added a more general version.
m (added a stretch goal to this (draft) task.)
(→‎{{header|Wren}}: Added a more general version.)
Line 199:
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
 
===Basic task===
<lang ecmascript>import "/math" for Int
import "/trait" for Stepped
Line 220 ⟶ 222:
 
Found 33 such primes.
</pre>
 
===More general===
This version deals with primes (in base 10) beginning and ending with any specified digit and with up to a given number of digits.
<lang ecmascript>import "/math" for Int
import "/trait" for Stepped
import "/seq" for Lst
import "/fmt" for Fmt
 
var getQualifyingPrimes = Fn.new { |x, d|
if (d.type != Num || !d.isInteger || d < 1) Fiber.abort("Invalid number of digits.")
if (x == 2 || x == 5) return [x]
if (x % 2 == 0) return []
var primes = []
var candidates = [x]
for (i in 1...d) {
var pow = 10.pow(i)
var start = x * (pow + 1)
var end = start + pow - 10
candidates.addAll(Stepped.new(start..end, 10).toList)
}
return candidates.where { |cand| Int.isPrime(cand) }.toList
}
 
var d = 4 // up to 'd' digits
for (x in [1, 2, 3, 5, 7, 9]) { // begins and ends with 'x'
var primes = getQualifyingPrimes.call(x, d)
var len = d + (d/3).floor
Fmt.print("Primes under $,%(len)d which begin and end in $d:", 10.pow(d), x)
for (chunk in Lst.chunks(primes, 10)) Fmt.print("$,%(len)d", chunk)
System.print("\nFound %(primes.count) such primes.\n")
}</lang>
 
{{out}}
<pre>
Primes under 10,000 which begin and end in 1:
11 101 131 151 181 191 1,021 1,031 1,051 1,061
1,091 1,151 1,171 1,181 1,201 1,231 1,291 1,301 1,321 1,361
1,381 1,451 1,471 1,481 1,511 1,531 1,571 1,601 1,621 1,721
1,741 1,801 1,811 1,831 1,861 1,871 1,901 1,931 1,951
 
Found 39 such primes.
 
Primes under 10,000 which begin and end in 2:
2
 
Found 1 such primes.
 
Primes under 10,000 which begin and end in 3:
3 313 353 373 383 3,023 3,083 3,163 3,203 3,253
3,313 3,323 3,343 3,373 3,413 3,433 3,463 3,533 3,583 3,593
3,613 3,623 3,643 3,673 3,733 3,793 3,803 3,823 3,833 3,853
3,863 3,923 3,943
 
Found 33 such primes.
 
Primes under 10,000 which begin and end in 5:
5
 
Found 1 such primes.
 
Primes under 10,000 which begin and end in 7:
7 727 757 787 797 7,027 7,057 7,127 7,177 7,187
7,207 7,237 7,247 7,297 7,307 7,417 7,457 7,477 7,487 7,507
7,517 7,537 7,547 7,577 7,607 7,687 7,717 7,727 7,757 7,817
7,867 7,877 7,907 7,927 7,937
 
Found 35 such primes.
 
Primes under 10,000 which begin and end in 9:
919 929 9,029 9,049 9,059 9,109 9,199 9,209 9,239 9,319
9,349 9,419 9,439 9,479 9,539 9,619 9,629 9,649 9,679 9,689
9,719 9,739 9,749 9,769 9,829 9,839 9,859 9,929 9,949
 
Found 29 such primes.
</pre>
 
9,490

edits