首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

程序的效率有关问题

2013-11-11 
程序的效率问题int prime(int n) { int a2//n为1时没有考虑 while (an)if (!(n%a++))break if(an+1

程序的效率问题


int prime(int n) 

int a=2;                    //n为1时没有考虑 
while (a<=n) 
    if (!(n%a++)) 
        break; 
if(a==n+1 && n!=1)  
    return 1; 
return 0; 
}

int prime(int n)
{
int i;                     
if(n<2) return 0;          //n为1时考虑了
for(i=2;i*i<=n;i++)
if(n%i==0) return 0;
return 1;
}
都看看哪个函数的效率比较高,详细的解释一下吧,谢谢!

[解决办法]
都不高,判断是否是质数,只要从2到 根号n就可以,第二个虽然是i不会超过根号n,但是循环每次都做乘法,没有必要
int mMax=sqrt(n);
for(i=2;i<=mMax;i++)
  if(n % i==0) return false;
return true;
[解决办法]
效率上考虑,需要从时间和空间两方面考虑的吧。
但从时间上考虑,第二种循环的次数较第一种循环次数少哦。所以,第二种效率稍微高一些。

热点排行