题410.筛质数-acwing-1293. 夏洛克和他的女朋友
一、题目
二、题解
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int N;
int vis[maxn],p[maxn],cnt;
void isPrime(int n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i]) p[++cnt]=i;
for(int j=1;j<=cnt;j++)
{
if(i*p[j]>n) break;
vis[i*p[j]]=1;
if(i%p[j]==0) break;
}
}
}
int main()
{
isPrime(1e5+5);
cin>>N;
//可证明是个二分图,质数点分一堆填一个色,合数点分一堆填一个色即可,所以最多两种颜色
if(N<3) cout<<1<<endl;
else cout<<2<<endl;
for(int i=2;i<2+N;i++)
{
if(!vis[i]) cout<<1<<" ";
else cout<<2<<" ";
}
}