有没有什么好的求质数的算法?推荐下。用C++实现

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:16:19

楼上的算法很快,不错,不过有一个小问题
就是库程序在计算平方根的时候,用的应该是牛顿迭代法
再加上是double类型,平方根有误差.
比方说
m=9
而sqrt(9*1.0)可能等于2.999999998
后面的循环就检查不出来
建议改为i<=sqrtm+1

只能是先求出a的平方根b,然后拿2到b一个个的去除a,看看有没有能除尽的。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{

cout<<"Please input a number: "<<endl;
int m;
cin>>m;
double sqrtm=sqrt(m*1.0);
for (int i=2;i<=sqrtm;++i)
if (m%i==0){
cout<<m<<" isn't a prime."<<endl;
return 1;
}
cout<<m<<" is a prime."<<endl;

}