Eratosthenes Sieve & Swan

 module primes

        fun int n | Eratosthenes // subroutine declaration
             
            int primes [ n ], 1 | l int // assignment operator

            0 | i int, 3 | index_square int // proc sift

            int first, last, factor // proc mark sieve

            for 0 | k int, k < n, k++ // fill with true

                true | primes[k]     
                
           
            while index_square < n  //proc sift

                if primes[i]  //proc mark sieve

                    0 + index_square | first
                    0 + n | last
                    i + i + 3 | factor
                    false | primes[first]

                    while last - first > factor

                        first + factor | first
                        false | primes[first]
                    
                // proc mark sieve

                i + 1 | i
                2 * i * (i + 3) + 3 | index_square

            // proc sift

            ' 2' | out  // print out

            for 0 | i int,  i < n, i++  // print out

                if primes[i]

                    if 2 * i + 3 > n
                        break
                    
                    ' ' 2 * i + 3 | out
                    l + 1 | l
                    if l % 10 == 0
                        '\n' | out
                    
                // if
            // print out

            '\n number : '  l | out

        // erato fun

     
    main  
 
        1000 | Eratosthenes // subroutine call

   

Comments

Popular posts from this blog

Hybrid Markup Language

Stream - Syntax-Oriented Language

iTeraTor Universal Data Language