- 论坛徽章:
- 3
|
本帖最后由 aqbssh 于 2019-11-12 17:50 编辑
最近业务清淡,玩个枚举的游戏,同样的需求,N算到200以内,用 shell 和c完成,没想到运行时间相差悬殊,有没有人帮忙解释一下原因?代码是乱凑的,
more wmnf.sh
#!/bin/bash
# 计算 N 以内的完美立方数
N=200 ; a=b=c=d=2
echo "现在为您计算 N 以内的完美立方数"
read -p "请输入 N 的最大取值范围:" N
echo $N
for((a=2;a<=N; a++))
do
for((b=2;b<a;b++))
do
for((c=b;c<a;c++))
do
for((d=c;d<a;d++))
do
if((a*a*a == b*b*b + c*c*c + d*d*d ))
then
echo "大数=$a , 三个小字= $b, $c, $d"
fi
done
done
done
done
more src/wmnf.c
#include<stdio.h>
#include<math.h>
int main (){
long int N=500;
printf("现在为您计算 N 以内的完美立方数\n请输入 N 的最大取值范围:\n" ;
scanf("%ld",&N);
for(long int a = 2;a <= N; a++)
for(long int b=2;b<a;b++)
for(long int c=b;c<a;c++)
for(long int d=c;d<a;d++)
if(a*a*a == b*b*b + c*c*c + d*d*d )
printf("大数= %ld , 三个小数字= %ld, %ld, %ld \n" , a, b, c, d);
return 0;
}
下面是执行的结果:
time ./wmnf.sh >/dev/null
请输入 N 的最大取值范围:200
real 6m24.463s
user 6m6.420s
sys 0m9.562s
time ./src/wmnf
real 0m2.480s
user 0m0.143s
sys 0m0.001s
|
|