數論有關基本算法c+



基本數論概念

1.約數

 用符號d/a表示d除以a,即存在某個整數k,使得a=kd。其中a稱為d的倍數。如果d/a,且d>0,則稱a的約數。

2.素數

 素數是指一個大於1的整數a,如果它只能被平凡約數1和它本身整除,那么這個數就是一個素數。

3.合數

 合數是一個與素數相對的概念。如果大於1的整數a,除了1和它本身之外,還能被其他整數整除,那么這個數就是一個合數。

4.公約數

 公約數是指一個數c是整數a的約數又是b的約數,那么我們稱這個數是c是整數ab的公約數。在ab的公約數中,最大的那個稱為最大公約數,記為gcd(a,b)。當ab至少有一個不為0時,gcd(a,b)的取值范圍1gcd(a,b)min(|a|,|b|

5.互質數

 如果兩個非1整數之間的公約數只有1,則稱這樣的兩個數互質。

****************************************************

求解兩個整數之間的最大公約數最常用的高效算法就是歐幾里得算法,也就是輾轉求余算法,具體實現代碼如下:

int gcd(int a,int b)
{
int max=a>b?a:b;
int min=max==a?b:a;
if(min!=0)
return gcd(min,max%min);
else
return max;
}

尋找素數

bool isprime(int number)
{
int k=static_cast<int>(sqrt((float)number));//求數的平方根下限//
int i;
for(i=2;i<=k+1;i++)
{
if(number%i==0)//如果能找到整除number的數跳出循環//
break;
}
if(i<=k)
return false;
else 
return true;
}



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: