一、试除法求约数
利用循环,一个个试,直到sqrt(n);
二、求约数的个数
三、约数之和
四、辗转相除法
这是求最大公约数的常用方法,整数a和b求最大公约数,c为a除以b的余数(c!=0),整体思想就是gcd(a,b)=gcd(b,r),有递归和非递归两种写法,都很简单。
//递归写法
int gcd(int a,int b)
{
int c=a%b;
if(c==0)return b;
else return gcd(b,c);
}
//非递归写法
int gcd(int a,int b)
{
while(a%b!=0)
{
int c=a%b;
a=b;
b=c;
}
return c;
}