怎样判断一个数是不是素数?

方法1

1 public bool IsPrime(int a)
2 {
3   for(int i=0;i<a/2+1;i++)
4     {
5       if(a%i==0)
6       return false;
7     }
8     return true;
9 }    

方法1特别简单,但是效率底下。首先可以先把偶数排除,现实中我们判断一个数是不是偶数,直接看最低位。在计算机中,根据a&1是不是等于0来判断。第二,迭代次数可以限制在sqrt(a)以内,这是因为如果a=b*c,b>sqrt(a)的话那么c<sqrt(a),所以如果a是合数,那么b和c中必有一个小于sqrt(a),所以只需要遍历到sqrt(a)就够了。

方法2

 1 public bool IsPrime(int a)
 2 {
 3    if(a&1==0)
 4     return false;
 5    for(int i=0;i<sqrt(a)+1;i++)
 6    {
 7      if(a%i==0)
 8      return false;
 9    } 
10   return true;
11 }