线性筛:线性时间内求质数
1 int prime[N]; 2 bool isp[N]; 3 int cnt = 0; 4 void getp(int x) { 5 for (int i = 2; i <= x; ++i) { 6 if (!isp[i]) 7 prime[cnt++] = i; 8 for (int j = 0; prime[j]*i<=x; ++j) { 9 isp[prime[j] * i] = true; 10 if (i % prime[j]==0) 11 break; 12 } 13 } 14 } 15 int main() { 16 int n; 17 cin >> n; 18 getp(n); 19 for (int i = 0; i < cnt; ++i) 20 cout << prime[i] << endl;//表示小于n的质数 21 return 0; 22 }
gcd求两个数最大公约数
1 int __gcd(int x, int y) { 2 if (x < y) 3 swap(x, y); 4 if (y == 0) 5 return x; 6 return __gcd(y, x % y); 7 }
转载请注明出处:http://www.fortunesungroup.com/article/20230330/778666.html