判断一个数是不是素数

这里写代码片方法一:2~m-1有没有能整除的 
int prime(int m)
{
    int i;
    if(m==0) return 0;
    if(m==1) return 0;//考虑0和1的情况
    for(i=2;i<m;i++)//没有等号 
    if (m%i==0) break;
    if(i<m) return 0;//用if(i>=m) return 1;是错误的 
    else return 1;
 } 


 方法二:2~sqrt(m)有没有能被整除的
 int prime(int m)
{
    int i;
    if(m==0)return 0;
    if(m==1) return 0;
    for(i=2;i<=sqrt(m);i++)//有等号 
    if (m%i==0) break;
    if(i<=sqrt(m)) return 0;//是素数 
    else return 1;//不是素数 
 } 
  方法三(对于方法二的改进)
 int prime(int m)
{
    int i;
    int k=floor(sqrt(n)+0.5);//避免重复算sqrt,通过四舍五入避免浮点误差,1.9999,m=sqrt(m),"0.9999将直接被截掉 只剩1"
    if(m<=1) return 0;
    for(i=2;i<=k;i++)//有等号 
    if (m%i==0) return 0;
    else return 1;//不是素数 
 } 
转发链接:http://blog.csdn.net/mengzhizhizhi/article/details/72871063

猜你喜欢

转载自blog.csdn.net/strive_0902/article/details/79505129