//方法一: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;
}
【C语言】判断素数函数
最新推荐文章于 2024-08-09 17:00:09 发布