(1)传统方法求素数:编写一个程序primer_thr1.c,使用暴力计算法计算30000000到30000200之间的所有素数,并输出这些素数。运行10次primer_thr1,记录每次运行的时间,并计算平均运行时间。 提示: 记录运行时间时,需要把你的标准输出重定向到/dev/null设备; 查看程序运行时间可用time命令
时间: 2024-03-07 13:49:36 浏览: 66
编写程序:计算100-10000之间有多少个素数,并输出所有素数。
好的,以下是primer_thr1.c的代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int start = 30000000;
int end = 30000200;
for (int i = start; i <= end; i++) {
if (is_prime(i)) {
printf("%d\n", i);
}
}
return 0;
}
```
运行该程序并记录运行时间可以使用以下命令:
```shell
time ./primer_thr1 > /dev/null
```
运行10次并统计平均运行时间可以使用一个简单的bash脚本:
```shell
#!/bin/bash
total_time=0
for i in {1..10}
do
t=$( { time ./primer_thr1 > /dev/null; } 2>&1 )
real_time=$( echo $t | awk '{print $2}' )
total_time=$( echo "$total_time + $real_time" | bc )
done
avg_time=$( echo "$total_time / 10" | bc )
echo "Average running time: $avg_time seconds"
```
运行该脚本即可得到平均运行时间。
阅读全文