1.gcd算法
int gcd(int a, int b)
{
return (a==0)?b:gcd(b%a, a);
}
//递推法
int gcd(int m, int n)
{
while(m>0)
{
int c = n % m;
n = m;
m = c;
}
return n;
}
/* 连续整数试探算法,计算最大公约数 */
int gcd(int m, int n)
{
if(m>n) {
int temp = m;
m = n;
n = temp;
}
int t = m;
while(m%t || n%t)
{
t--;
}
return t;
}
2.素数判断(该内容转载自http://blog.csdn.net/arvonzhang/article/details/8564836)
//最笨做法
bool IsPrime(unsigned n)
{
if (n<2)
{
//小于2的数即不是合数也不是素数
throw 0;
}
for (unsigned i=2;i<n;++i)
{
//和比它小的所有的数相除,如果都除不尽,证明素数
if (n%i==0)
{
//除尽了,则是合数
return false;
}
}
return true;
}
//一般做法
num = 0;
for(i=2; i<=n; i++)
{ for(j=2; j<=sqrt(i); j++)
if( j%i==0 ) break;
if( j>sqrt(i) ) prime[num++] = i;
}
//素数表做法
bool IsPrime2(unsigned n)
{
if ( n < 2 )
{ // 小于2的数即不是合数也不是素数
throw 0;
}
static unsigned aPrimeList[]