日にちの素因数分解

x 月 y 日を z = 100 * x + y と表現したとき、z の約数の個数が最も多くなるような x と y を求めよ。

この問題を解いてくれた物理の後輩に感謝。答えはふたつあるそうです。

勘で解いたら間違えていたよ.仕方がないのでまたもコンピュータを使ったよ.最後に出力とソースを載せておくから暇な人は見るがいいよ.でも

    static boolean ifPrime(int n){ // n<37
	switch(n){
	case 2:case 3:case 5:case 7:case 11:case 13:case 17:case 19:
	case 23:case 29:case 31: return true;
	default: return false;
	}
    }

これはひどいと自分でも思う.だけどさ,ここで

	for(int i=2;i<=Math.sqrt(n);i++) if(n%i==0) return false; return true;

とかやるの無駄だし.11 個しかないんだからリスト作っちゃえばいいじゃん.

続きを読む