69,335
社区成员
发帖
与我相关
我的任务
分享
if(m%2 ==0) ----> if(m&1==0)
int isprime(unsigned int m) //肯定是检查非负数^_^
{
unsigned int k,sqr;
if(m <2)
return 0; /*小于2的都不是素数*/
if (m==2)
return 1;
if(m%2 ==0)
return 0; /*偶数都不是素数*/
sqr = sqrt((double)m);
for(k=3; k <=sqr; k+=2) /*k从3开始,只选奇数做穷举侯选项*/
if(m%k == 0)
return 0; /*函数中的return 比break更干脆,退出循环并退出函数*/
return 1;
} /*没有使用标志量,一定蕴含着“m是素数”这一假设*/
int TestPrime(unsigned long n)
{
unsigned long i = 0;
unsigned long sq = 0;
if(n == 1)
return false;
else if(n == 2)
return true;
if(!(n % 2))
return false;
sq = (unsigned long)sqrt((double)n);
for(i=3; i<=sq; i+=2)
{
if(!(n % i))
return false;
}
return true;
}
int isprime(int m)
{
int k,sqr;
if(m <2)
return 0; /*小于2的都不是素数*/
if(m%2 ==0)
return 0; /*偶数都不是素数*/
sqr = sqrt((double)m);
for(k=3; k <=sqr; k+=2) /*k从3开始,只选奇数做穷举侯选项*/
if(m%k == 0)
return 0; /*函数中的return 比break更干脆,退出循环并退出函数*/
return 1;
} /*没有使用标志量,一定蕴含着“m是素数”这一假设*/
int TestPrime(unsigned long n)
{
unsigned long i = 0;
unsigned long sq = 0;
if(n == 1)
return false;
else if(n == 2)
return true;
if(!(n % 2))
return false;
sq = (unsigned long)sqrt((double)n);
for(i=2; i<=sq; i++)
{
if(!(n % i))
return false;
}
return true;
}