(1)传统方法求素数:编写一个程序primer_thr1.c,使用暴力计算法计算30000000到30000200之间的所有素数,并输出这些素数。运行10次primer_thr1,记录每次运行的时间,并计算平均运行时间。 提示: 记录运行时间时,需要把你的标准输出重定向到/dev/null设备; 查看程序运行时间可用time命令。
时间: 2024-03-07 15:49:58 浏览: 139
以下是一个可能的primer_thr1.c程序:
```c
#include <stdio.h>
int is_prime(int n) {
if (n < 2) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int count = 0;
for (int i = 30000000; i <= 30000200; i++) {
if (is_prime(i)) {
printf("%d ", i);
count++;
}
}
printf("\nCount: %d\n", count);
return 0;
}
```
编译命令为:
```
gcc -o primer_thr1 primer_thr1.c
```
然后可以使用以下脚本运行程序10次并计算平均运行时间:
```bash
#!/bin/bash
total=0
for i in {1..10}
do
t=$( { time ./primer_thr1 >/dev/null; } 2>&1 )
echo "Run $i: $t"
seconds=$( echo "$t" | grep "real" | awk '{print $2}' | tr ',' '.' )
total=$( echo "$total + $seconds" | bc -l )
done
echo "Average time: $( echo "$total / 10" | bc -l ) seconds"
```
这个脚本会运行程序10次,并输出每次运行的时间以及平均运行时间。注意要先给脚本文件执行权限:
```
chmod +x run_primer_thr1.sh
```
然后可以直接运行脚本:
```
./run_primer_thr1.sh
```
阅读全文