重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
for(i=a;i=b;i++)
创新互联主要从事网站设计、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务南县,10多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
i每次递增2,因为偶数不可能是。这样可以少一半的时间。
改动几点:
{for(j=2;j=n;j++)
{if(i%j==0) c=1;}
j 可以从3开始,每次递增2,这样可以少一半的时间。
结合下面的查表法,可以得到更好的结果。
可以通过延时计数来解决。比如每1S,count += 1;if(count你想要的时间){ 处理程序;
}
#include stdio.h
#include windows.h
//子线程函数
char flag = 0;
char result = 0;
DWORD WINAPI longTimeFunction(LPVOID pM)
{
while(1){
printf("opreating...\n");
Sleep(20);
}
result = 1;
flag = 1;
}
//主函数,所谓主函数其实就是主线程执行的函数。
int main()
{
printf("simple multi thread,INFINITE:%d\n",INFINITE);
printf(" -- by MoreWindows( ) --\n\n");
flag = 0;
HANDLE longTimeFunctionHandle = CreateThread(NULL, 0, longTimeFunction, NULL, 0, NULL);
WaitForSingleObject(longTimeFunctionHandle, 200);
if(flag == 0){
printf("Timeout!\n");
result = -1;
}
printf("result: %d\n", result);
return 0;
}
看意思是输出m到n间的素数,一行5个数。
超时原因很多,可能n太大或者m2,代码里应该排除这些情况