素数的快速筛选法
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
int* getPrime(int max_area,int* total) {
int* primes = nullptr;
primes = (int*)realloc(primes, (sizeof(int)*(max_area+9)>>1));
bool* isPrime = (bool*)malloc(sizeof(bool)*(max_area+9));
memset(isPrime, 1, sizeof(isPrime));
int count = 0;
for (int i = 2; i < max_area; i++) {
if (isPrime[i]) {
primes[count++] = i;
}
for (int j = i + i; j < max_area; j += i) {
isPrime[j] = 0;
}
}
*total = count;
return primes;
}
int main() {
int max_area = 0;
cin >> max_area;
int total = 0;
int* primes = getPrime(max_area,&total);
system("cls");
for (int i = 0; i < total; i++) {
cout << *(primes + i) << endl;
}
free(primes);
primes = nullptr;
return 0;
}
int gcd(int a,int b){
return b == 0 ? a : gcd(b,a%b);
}
int minSum(int a,int b){
int ans = 0;
ans = a*b/gcd(a,b);
return ans;
}