C语言经典例题:素数判断


质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

初级版

  1. _Bool Isprimer(unsigned n)  
  2. {  
  3.             if(n<=1)return false;   
  4.             unsigned i,tem=sqrt(n)+1;  
  5.             for(i=2;i<=tem;i++)     /*2也是素数*/  
  6.             if(n%i==0)return false;  
  7.             return true;  
  8. }   

升级版

  1. _Bool Isprimer(unsigned n)  
  2. {  
  3.             if(n==2)return true;  
  4.             if(n<=1||n%2==0)return false/*2以外偶数都不是素数*/  
  5.             unsigned i,tem=sqrt(n)+1;  
  6.             for(i=3;i<=tem;i+=2)     /*i==2的情况已经在前面判断过了,这里直接从3开始,且一个奇数*/  
  7.             if(n%i==0)return false;  /*且进入到这里的n都是奇数,奇数是不可能被偶数整除的,所以i每次增2*/   
  8.             return true;  
  9. }   

希望有更好的算法!

相关内容