d语言golang语言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());
}
``
原文地址: https://www.cveoy.top/t/topic/fp8D 著作权归作者所有。请勿转载和采集!