D, Go, Rust 语言计算第 300000 个素数效率对比:代码与时间测试

本文将展示使用 D,Go 和 Rust 三种语言计算第 300000 个素数的完整代码,并比较它们的执行时间,帮助您了解不同语言在计算素数时的效率差异。

D 语言代码

import std.stdio, std.datetime;

bool isPrime(int n)
{
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
    if (n % 2 == 0 || n % 3 == 0)
        return false;
    for (int i = 5; i * i <= n; i += 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
    return true;
}

void main()
{
    auto t1 = SysTime.usecs;
    int count = 0, num = 2;
    while (count < 300000)
    {
        if (isPrime(num))
            count++;
        num++;
    }
    auto t2 = SysTime.usecs;
    writeln('The 300000th prime number is: ', num - 1);
    writeln('Time taken: ', t2 - t1, ' microseconds');
}

Golang 代码

package main

import (
    "fmt"
    "time"
)

func isPrime(n int) bool {
    if n <= 1 {
        return false
    }
    if n <= 3 {
        return true
    }
    if n%2 == 0 || n%3 == 0 {
        return false
    }
    for i := 5; i*i <= n; i += 6 {
        if n%i == 0 || n%(i+2) == 0 {
            return false
        }
    }
    return true
}

func main() {
    t1 := time.Now().UnixNano()
    count, num := 0, 2
    for count < 300000 {
        if isPrime(num) {
            count++
        }
        num++
    }
    t2 := time.Now().UnixNano()
    fmt.Println('The 300000th prime number is:', num-1)
    fmt.Println('Time taken:', t2-t1, 'nanoseconds')
}

Rust 代码

fn is_prime(n: u64) -> bool {
    if n <= 1 {
        return false;
    }
    if n <= 3 {
        return true;
    }
    if n % 2 == 0 || n % 3 == 0 {
        return false;
    }
    let mut i = 5;
    while i * i <= n {
        if n % i == 0 || n % (i + 2) == 0 {
            return false;
        }
        i += 6;
    }
    true
}

fn main() {
    let t1 = std::time::Instant::now();
    let mut count = 0;
    let mut num = 2;
    while count < 300000 {
        if is_prime(num) {
            count += 1;
        }
        num += 1;
    }
    let t2 = std::time::Instant::now();
    println('The 300000th prime number is: {}', num - 1);
    println('Time taken: {} microseconds', (t2 - t1).as_micros());
}

运行结果:

  • D 语言: ...
  • Go 语言: ...
  • Rust 语言: ...

结论:

通过以上代码和执行时间对比,我们可以看到 ...。这说明 ...。

注意:

  • 以上代码仅供参考,实际运行时间可能会有所不同,具体取决于硬件环境和编译器优化等因素。
  • 您可以根据需要修改代码,尝试其他算法,以提高效率。
  • 欢迎在评论区分享您的测试结果和优化经验。
D, Go, Rust 语言计算第 300000 个素数效率对比:代码与时间测试

原文地址: https://www.cveoy.top/t/topic/oeYg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录