cpp中求最大公约数,最小公倍数,以及用埃氏筛快速求1到n的所有素数
int gcd(int a, int b) {
while(b) {
int t = b;
b = a % b;
a = t;
}
return a;
}
long long lcm(long long a, long long b) {
return a / gcd(a, b) * b; //先除后乘,避免溢出
}
const int MAX = 1e6 + 10;
bool isPrime[MAX];
void sieve(int n) {
memset(isPrime, 1, sizeof(isPrime));
isPrime[0] = isPrime[1] = 0;
for(int i = 2; i * i <= n; i++) {
if(isPrime[i]) {
for(int j = i * i; j <= n; j += i)
isPrime[j] = 0;
}
}
}

浙公网安备 33010602011771号