このTopCoderの問題はアーカイブには存在していない。問題文についてざっくりと説明する。
1より大きいNが「ほとんど素数」というのは次の条件を満たすものとする。1)Nは素数ではない。2)1とそれ自身以外で割り切れる数字がある。3)Nを素因数分解するとすべて10より大きいものとなる。さて、引数のmより大きな「ほとんど素数」になる数のうち、最小になるものを返せ。
私の解答はこちら。
public class AlmostPrimeNumbers {
public int getNext(int m) {
for( int i=m+1 ; i<Integer.MAX_VALUE ; i++ ){
int half = i/2 + 1;
for( int j=2 ; j<half ; j++ ){
if( j < 10 && i%j==0 ) break; // 2~9で割り切れたら失敗、次へ行く
if( i%j == 0 ) return i; // 初めて割り切れるのが10より大きな数であればOK
}
}
return 0;
}
}得点は105.49/250。1回のsubmitでシステムテストクリア。途中でアリーナが不調に陥り提出に35分ほどロスト...
0 件のコメント:
コメントを投稿