怎样判断一个数是不是素数?
方法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 }