做了这些题我发现有很多题都和素数有关系,所以我想总结一下素数的判断方法,对以后做题也有些帮助。
首先素数定义是只有1和它本身两个因数的数。1和0既不是素数也不是合数。所以说素数最小的是从2开始的。
1、最直接的方法也就是根据素数的定义来进行判断。
bool sushu(int n)
{
if (n<=3)
{
return n>1;
}
for(int i=2;i<n;i++)
{
if (n%i==0)
{
return false;
}
}
return true;
}
2、为了进一步节省代码运行时间,再进一步优化,如果一个数为合数的话,肯定存在两个因数,这两个因数一个小于等于sqrt(n),一个大于等于sqrt(n),可以利用这个性质来进一步优化代码。
bool sushu(int n)
{
if (n<=3)
{
return n>1;
}
int sqrt=(int)Math.sqrt(n);
for(int i=2;i<sqrt;i++)
{
if (n%i==0)
{
return false;
}
}
return true;
}