この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 件のコメント:
コメントを投稿