Nice primes: Difference between revisions
(→{{header|Wren}}: Simplification.) |
m (added highlighting and whitespace, corrected a misspelling, implied that N is to be in base ten.) |
||
Line 1: | Line 1: | ||
{{Draft task}} |
{{Draft task}} |
||
::# Take an integer n |
::# Take an positive integer '''n''' |
||
::# sumn is sum of |
::# '''sumn''' is the sum of the decimal digits of '''n''' |
||
::# If sumn's |
::# If '''sumn''''s length is greater than '''1''' (unity), repeat step 2 for '''n = sumn''' |
||
::# Stop when sumn's length equal to 1 |
::# Stop when '''sumn''''s length is equal to '''1''' (unity) |
||
<br> If n and sumn are prime then n is Nice prime |
|||
<br> Let 500 < n < 1000 |
|||
If '''n''' and '''sumn''' are prime, then '''n''' is a '''Nice prime''' |
|||
⚫ | |||
Let '''500 < n < 1000''' |
|||
;Example: |
;Example: |
||
<pre> |
<pre> |
||
Line 13: | Line 17: | ||
1 + 6 = 7 (prime) |
1 + 6 = 7 (prime) |
||
</pre> |
</pre> |
||
⚫ | |||
=={{header|Factor}}== |
=={{header|Factor}}== |
Revision as of 19:01, 10 March 2021
- Take an positive integer n
- sumn is the sum of the decimal digits of n
- If sumn's length is greater than 1 (unity), repeat step 2 for n = sumn
- Stop when sumn's length is equal to 1 (unity)
If n and sumn are prime, then n is a Nice prime
Let 500 < n < 1000
- Example
853 (prime) 8 + 5 + 3 = 16 1 + 6 = 7 (prime)
Factor
<lang factor>USING: math math.primes prettyprint sequences ;
- digital-root ( m -- n ) 1 - 9 mod 1 + ;
500 1000 primes-between [ digital-root prime? ] filter .</lang>
- Output:
V{ 509 547 563 569 587 599 601 617 619 641 653 659 673 677 691 709 727 743 761 797 821 839 853 857 887 907 911 929 941 947 977 983 997 }
Go
<lang go>package main
import "fmt"
func isPrime(n int) bool {
switch { case n < 2: return false case n%2 == 0: return n == 2 case n%3 == 0: return n == 3 default: d := 5 for d*d <= n { if n%d == 0 { return false } d += 2 if n%d == 0 { return false } d += 4 } return true }
}
func sumDigits(n int) int {
sum := 0 for n > 0 { sum += n % 10 n /= 10 } return sum
}
func main() {
fmt.Println("Nice primes in the interval (500, 900) are:") c := 0 for i := 501; i <= 999; i += 2 { if isPrime(i) { s := i for s >= 10 { s = sumDigits(s) } if s == 2 || s == 3 || s == 5 || s == 7 { c++ fmt.Printf("%2d: %d -> Σ = %d\n", c, i, s) } } }
}</lang>
- Output:
Same as Wren example.
Ring
<lang ring> load "stdlib.ring"
num = 0 limit1 = 500 limit2 = 1000
see "working..." + nl see "Nice numbers are:" + nl
for n = limit1 to limit2
strn = string(n) while true sumn = 0 for m = 1 to len(strn) sumn = sumn + number(strn[m]) next if len(string(sumn)) = 1 exit ok strn = string(sumn) end if isprime(n) and isprime(sumn) num = num + 1 see "" + num + ": " + n + " sumn = " + sumn + nl ok
next
see "done..." + nl </lang>
- Output:
working... Nice numbers are: 1: 509 sumn = 5 2: 547 sumn = 7 3: 563 sumn = 5 4: 569 sumn = 2 5: 587 sumn = 2 6: 599 sumn = 5 7: 601 sumn = 7 8: 617 sumn = 5 9: 619 sumn = 7 10: 641 sumn = 2 11: 653 sumn = 5 12: 659 sumn = 2 13: 673 sumn = 7 14: 677 sumn = 2 15: 691 sumn = 7 16: 709 sumn = 7 17: 727 sumn = 7 18: 743 sumn = 5 19: 761 sumn = 5 20: 797 sumn = 5 21: 821 sumn = 2 22: 839 sumn = 2 23: 853 sumn = 7 24: 857 sumn = 2 25: 887 sumn = 5 26: 907 sumn = 7 27: 911 sumn = 2 28: 929 sumn = 2 29: 941 sumn = 5 30: 947 sumn = 2 31: 977 sumn = 5 32: 983 sumn = 2 33: 997 sumn = 7 done...
Wren
<lang ecmascript>import "/math" for Int import "/trait" for Stepped import "/fmt" for Fmt
var sumDigits = Fn.new { |n|
var sum = 0 while (n > 0) { sum = sum + (n % 10) n = (n/10).floor } return sum
}
System.print("Nice primes in the interval (500, 900) are:") var c = 0 for (i in Stepped.new(501..999, 2)) {
if (Int.isPrime(i)) { var s = i while (s >= 10) s = sumDigits.call(s) if (Int.isPrime(s)) { c = c + 1 Fmt.print("$2d: $d -> Σ = $d", c, i, s) } }
}</lang>
- Output:
Nice primes in the interval (500, 900) are: 1: 509 -> Σ = 5 2: 547 -> Σ = 7 3: 563 -> Σ = 5 4: 569 -> Σ = 2 5: 587 -> Σ = 2 6: 599 -> Σ = 5 7: 601 -> Σ = 7 8: 617 -> Σ = 5 9: 619 -> Σ = 7 10: 641 -> Σ = 2 11: 653 -> Σ = 5 12: 659 -> Σ = 2 13: 673 -> Σ = 7 14: 677 -> Σ = 2 15: 691 -> Σ = 7 16: 709 -> Σ = 7 17: 727 -> Σ = 7 18: 743 -> Σ = 5 19: 761 -> Σ = 5 20: 797 -> Σ = 5 21: 821 -> Σ = 2 22: 839 -> Σ = 2 23: 853 -> Σ = 7 24: 857 -> Σ = 2 25: 887 -> Σ = 5 26: 907 -> Σ = 7 27: 911 -> Σ = 2 28: 929 -> Σ = 2 29: 941 -> Σ = 5 30: 947 -> Σ = 2 31: 977 -> Σ = 5 32: 983 -> Σ = 2 33: 997 -> Σ = 7