传统方法求素数:编写一个程序primer_thr1.c,使用暴力计算法计算30000000到30000200之间的所有素数,并输出这些素数。运行10次primer_thr1,记录每次运行的时间,并计算平均运行时间。
时间: 2024-03-07 07:49:44 浏览: 225
编写程序:计算100-10000之间有多少个素数,并输出所有素数。
好的,以下是primer_thr1.c的代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#include <time.h>
bool is_prime(int n) {
if (n < 2) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
int main() {
clock_t start, end;
double duration;
int count = 0;
start = clock();
for (int i = 30000000; i <= 30000200; i++) {
if (is_prime(i)) {
printf("%d ", i);
count++;
}
}
end = clock();
duration = (double)(end - start) / CLOCKS_PER_SEC;
printf("\nTotal %d prime numbers found in %f seconds.\n", count, duration);
return 0;
}
```
接下来,可以编写一个简单的脚本来运行程序10次并记录每次运行的时间:
```bash
#!/bin/bash
sum=0
for i in {1..10}
do
echo "Run $i ..."
start=$(date +%s.%N)
./primer_thr1
end=$(date +%s.%N)
duration=$(echo "$end - $start" | bc)
echo "Time taken: $duration seconds"
sum=$(echo "$sum + $duration" | bc)
done
echo "Average time taken: $(echo "$sum / 10" | bc) seconds"
```
在终端中运行脚本即可得到结果。
阅读全文