请c语言高手修改和优化程序代码,急急急!

来源:百度知道 编辑:UC知道 时间:2024/09/25 22:18:52
程序如下
#include<stdio.h>
#include<math.h>
#include<time.h>
void swap(int*a,int*b)
{
int t;
printf("a=%d b=%d\n",*a,*b);
t=*a;*a=*b;*b=t;
}
void ast (int*a,int*b)
{
int i,k,n;
n=0;
for(i=*a;i<=*b;i++)
{
for(k=2;k<*b;k++)
if(i%k==0)break;
if(i==k)n++;
}
printf("n=%d",n);
}
main(void)
{
clock_t start,finish;
int a,b,s=0;
printf("请输入两个正整数a,b:");
scanf("%d ,%d",&a,&b);
start=clock();
if(a>b)swap(&a,&b);
ast(&a,&b);
finish=clock();
printf("所耗时间,%d,%6.3f秒,\n",s,(double)
(finish-start)/CLOCKS_PER_SEC);
}
是要求1亿以上的素数,并且消耗时间尽可能的少

a=9;
b=10;
a=a^b;
b=b^a;
a=a^b;
结果是a为10,b为9.
值交换时^的运算速度要比其他的快

循环一次要判断判断的条件越少则越快,提高效率while用得更多(忘记是哪个说的了)
if(i%k==0)break;
可以用
while(i%k != 0)
{
//完成你的目的***

}

////////////////////
或者用汇编写循环吧