Rebol3 Code Examplex


Twin primes

Rebol [
    title: "Rosetta code: Twin primes"
    file:  %Twin_primes.r3
    url:   https://rosettacode.org/wiki/Twin_primes
]

twin-primes: function [
    "Counts twin prime pairs (i, i+2) with i of form 6k-1 up to limit"
    limit [integer!]
][
    k: 1 i: count: 0
    while [i <= limit] [
        i: (6 * k) - 1 ;; candidate lower twin, always of form 6k-1
        j: i + 2       ;; candidate upper twin
        if all [prime? i  prime? j] [ ++ count ] ;; both prime -> twin pair found
        k: k + 1
    ]
    count + 1
]

limit: 10 while [limit <= 1000000] [
    print ["From 2 to" limit "there are" as-green twin-primes limit "twin primes."]
    limit: limit * 10
]

Output:

From 2 to 10 there are 3 twin primes.
From 2 to 100 there are 9 twin primes.
From 2 to 1000 there are 35 twin primes.
From 2 to 10000 there are 205 twin primes.
From 2 to 100000 there are 1224 twin primes.
From 2 to 1000000 there are 8169 twin primes.