int ss(int n)
{ int i;
double j=sqrt(n);
if(n<2)
{
printf("input ERROR,n must >1/n");
exit(1);
}
for (i=2;i<=j;i++)
if (n%i==0)
return 0;
return 1;
}
重点在于 j=sqrt(n)这句,初学者一般用j=n,懂一点用j=n/2
关于素数的判定,还有很多方法,常用的是筛选法
紧凑的程序不一定是好程序,最关键的要是有效率。
昨天看到一题,计算1-2+3-4+5-6......+n的值,n的值很大 ,意思是如果简单地执行一个个加减的话,耗时会长,这样的函数就很好:
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
效率没话说。