Div2 250 PrimeContainers
問題
入力 a0 に対して ak+1=[ak / 2] で数列を作る.その中で素数がいくつあるか求めよ.
コード
class PrimeContainers { bool isPrime(int n) { if( n < 2 ) return false; if( n == 2 ) return true; if( n % 2 == 0 ) return false; for( int k = 3 ; k * k <= n ; k += 2 ) { if( n % k == 0 ) return false; } return true; } public: int containerSize(int N) { int ret = 0; for( int n = N ; n > 1 ; n >>= 1 ) { if( isPrime(n) ) ++ret; } return ret; } };