c语言time问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:32:40
// 123.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "math.h"
#include "time.h"

int isprime (int n) {
int m=2;
for (;m*m<=n;++m){
if(n%m==0) return 0;
return 1;}
}

int main ( )
{
int n,m;
clock_t t ;
for (n=6;n<=20000;n+=2){
t = clock();

for (m=3;m<=n/2;m+=2){t = clock();
if (isprime(m)&&isprime(n-m)){
printf("%d,%fs\n",n,(double)(clock()-t)/CLK_TCK);
break;}
}

}
return 0;
}

用的vs2008 c++
为什么运行后时间一直只显示0呀?什么地方出错了?

时间太短。
你把 t = clock(); 移到外面:

int main ( )
{
int n,m;
clock_t t ;

t = clock(); // 移到这里
for (n=6;n<=20000;n+=2){
for (m=3;m<=n/2;m+=2){
// t = clock(); 这个t去掉
if (isprime(m)&&isprime(n-m)){
printf("%d,%fs\n",n,(double)(clock()-t)/CLK_TCK);
break;}
}

哪也没错……只不过运行时间太快了,连1ms都不到,两次clock()返回的是同一个值,结果当然是0了……

另外这程序是个啥功能?找出所有偶数?貌似不该是这么个功能吧……

程序运行时间太快了,当然是0.

另外,程序有几个错误,除了L_o_o_n_i_e指出的,还有isPrime函数,最后的return 1;应该移出大括号来.

int isprime (int n) {
int m=2;
for (;m*m<=n;++m){
if(n%m==0) return 0;
}
return 1;
}