n個の宝石の数、i番目の宝石の値であること、宝石の値は2,3,4であり、I + 1、...、N + 1、
染色にこれらのジュエリーは、ジュエリーの価格を作ることは、他の素因数の宝石であるときに、異なる色の2つの宝石
最低限必要な色数、およびプロトコルを染色する出力色の数
n∈[1,1e5]
#説明
二部グラフ、脇全て素数、他方の側の係合の数、その結果、2色のみの最大
一つの色のエッジは、エッジの二種類の必要がある場合に二部グラフだけでなく、必要な場合
エッジ合成数、時間無限大のない合成数が存在する場合には、あります
即ちときのn> = 3、合成数が存在しなければならない場合。
1の#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 CONST INT N = 1E5 + 10 。 4 INT P [N]、CNT。 5 ブール値ST [N]。 6 ボイド get_primes(int型N){ 7 ため(intは iは= 2、I <= N; I ++ ){ 8 であれば(ST [I]!)P [CNT ++] = I。 9 用(INT J = 0 ; P [j]が<= N / I; J ++ ){ 10 ST [P [j] * I] = 真。 11 もし(I%のP [j] == 0)ブレーク。 12 } 13 } 14 } 15 int型のmain(){ 16 INT N。 17 CIN >> N。 18 get_primes(N + 1 )。 19 であれば(N> 2)プット(" 2 " )。 20の 他のプット(" 1 " ); 21 22 のために(INT iが= 2、I <= N + 1 ; I ++){ 23 であれば(ST [i])と 24 COUT << ' 2 ' << ' ' 。 25 他の coutの<< ' 1 ' << ' ' ; 26 } 27 }