编程语言
首页 > 编程语言> > C++常用数学计算算法总结

C++常用数学计算算法总结

作者:互联网

 

1、求最大公因数和最小公倍数

利用辗转相除法,我们可以很方便地求得两个数的最大公因数(greatest common divisor, gcd);
将两个数相乘再除以最大公因数即可得到最小公倍数(least common multiple, lcm)。

int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a% b);
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}

2、判定质数

bool is_prime2(unsigned long long n) { //middle
    long long stop = sqrt(n) + 1;
    if (n == 2) {
        return 1;
    }
    if (n % 2 == 0) {
        return 0;
    }
    for (int i = 3; i <= stop; i += 2) {
        if (n % i == 0) {
            return 0;
        }
    }
    return 1;
}

求所有<n的质数

204. 计数质数 - 力扣(LeetCode) (leetcode-cn.com)

int countPrimes(int n) {
        if(n<=2) return 0; 
        vector<unsigned char> N(n,1);
        int ans=0;
        for(int i=2;i<n;++i)
        { 
            if(N[i]==1) 
            {
                ans++; 
                for(int j=2*i; j<n; j+=i) N[j]=0; 
            }
        } 
        return ans;
    }

 

标签:return,gcd,int,long,公倍数,算法,C++,数学计算,公因数
来源: https://www.cnblogs.com/nntzhc/p/14351031.html