最大公约数:欧几里得算法
原理:a,b的公约数就是b,a%b的公约数(a>b)
辗转相除法。
int gcd(int a, int b)
{
if (b == 0) return a;
else return gcd(b, a % b);
}
/* 如果b是0 那!b表示 非0
如果b不是0 那!b表示为0 */
int gcd(int a, int b)
{
return !b a:gcd(b,a%b);
}
int main()
{
int a, b;
while (cin>>a>>b && a!=EOF)
{
a > b ? cout << gcd(a, b) : cout << gcd(b, a);
cout<<endl;
}
}
最小公倍数:基于最大公约数。
a/gcd(a,b) *b就是最小公倍数。
质因子分解:最多存在一个大于sqrt(n)的质因子。
for (int i = 0;i < num && prime[i]<=sqrt(n)
; i++)
大整数运算
超过数据类型存储的运算
输入用字符串读入,然后转存为数组。
减法 注意最后1234-1231 = 0003 要去0 减len