质数得判断。
如果一个x有因数m 那么 x%m= 0 则 x/m 与 m 都是x得因数,所以一个数因数一定时在sqrt(x) 左右成对出现。
素数得因数都是素数
所以可以优化,比如1-n范围得素数 只用用1-sqrt(n)得素数筛就行了
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn = 1e5 + 10;
int vis[maxn];
void m(int n) {
n = sqrt(n+0.5); // 一个数得因数成对出现在 sqrt左右
for(int i = 2; i <= n; i ++) {
if(!vis[i]) {
for(int j = i + i; j < n*n; j += i) {
vis[j] = 1;
}
}
}
}
int main() {
m(100000);
for(int i = 2; i < 100; i ++) {
if(!vis[i]) cout << i << ' ';
}
return 0;
}