( enpassant | 2013. 02. 05., k – 15:44 )

AMD Phenom(tm) II X4 955

C++:
time ./prime 28.246s

Scala:
time scala prime.scala 37.946s

Források:
C++:


#include <stdio.h>
#include <math.h>

int main() {
    int* primeArr = new int[1000000];
    int count = 0;
    for (int i = 2; i<=10000000; i++) {
        int k = int( sqrt(i) );
        bool isPrime = true;
        for (int j = 2; j <= k; j++) {
            if (i % j == 0) {
                isPrime = false;
                break;
            }
        }
        if (isPrime) {
            primeArr[count] = i;
            count += 1;
        }
    }
    printf("%d\n", count);
    return 0;
}

Scala 2.9.2:


import scala.util.control.Breaks._

var primeArr = new Array[Int](1000000)
var count = 0;
for (i <- 2 to 10000000) {
    var k = scala.math.sqrt(i).toInt
    var isPrime = true
    breakable { for (j <- 2 to k) {
        if (i % j == 0) {
            isPrime = false
            break
        }
    } }
    if (isPrime) {
        primeArr(count) = i
        count += 1
    }
}
println(count)