欧拉筛模板 确保每个数只被其最小质因子筛

#include
#include
using namespace std;
typedef long long ll;
const int maxn=1e6+5;
const ll mod=1e9+7;
const int INF=0x3f3f3f3f;
#define pb push_back
#define IO ios::sync_with_stdio(false);cin.tie(0);

ll n,m,maxx,x,cnt,f;
ll T,a[maxn];
ll vis[maxn],prime[maxn];
void getprime(ll n){
     
	memset(vis,0,sizeof vis);
	vis[0]=1;vis[1]=1;
	for(int i=2;i<=n;i++){
     
		if(!vis[i])
			prime[++cnt]=i;
		for(int j=1;j<=cnt && i*prime[j]<=n;j++){
     
			vis[i*prime[j]]=1;	//标记合数 
			if(i%prime[j]==0)
				break;
		}
	}
}
void solve(){
     
	
	for(int i=1;i<=cnt;i++){
     
		cout<<prime[i]<<" ";
	}
	cout<<endl;
}
int main() {
     
	getprime(3500);
	solve();
	return 0;
}

https://blog.csdn.net/weixin_42172676/article/details/81978475 break详解 有图

你可能感兴趣的:(数论)