class Ideone
{
static int[] prime = { 2, 3, 5, 7, 11, 13, 17, 23, 29, 31 };
static long limit = 10_0000_0000;
static long maxNumber;
static int maxYakusu;
public static void main
(String[] args
) {
search
(1,
1,
0,
Integer.
MAX_VALUE); System.
out.
printf("数値: %d, 約数の数: %d%n", maxNumber, maxYakusu
); }
static void search(long number, int yakusu, int n, int l)
{
int newYakusu = yakusu;
for (int i = 1; i <= l && number * prime[n] <= limit; i++)
{
newYakusu += yakusu;
number *= prime[n];
if (newYakusu > maxYakusu)
{
maxYakusu = newYakusu;
maxNumber = number;
}
search(number, newYakusu, n + 1, i);
}
}
}
Y2xhc3MgSWRlb25lCnsKICAgIHN0YXRpYyBpbnRbXSBwcmltZSA9IHsgMiwgMywgNSwgNywgMTEsIDEzLCAxNywgMjMsIDI5LCAzMSB9OwogICAgc3RhdGljIGxvbmcgbGltaXQgPSAxMF8wMDAwXzAwMDA7CiAgICBzdGF0aWMgbG9uZyBtYXhOdW1iZXI7CiAgICBzdGF0aWMgaW50IG1heFlha3VzdTsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIHNlYXJjaCgxLCAxLCAwLCBJbnRlZ2VyLk1BWF9WQUxVRSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIuaVsOWApDogJWQsIOe0hOaVsOOBruaVsDogJWQlbiIsIG1heE51bWJlciwgbWF4WWFrdXN1KTsKICAgIH0KCiAgICBzdGF0aWMgdm9pZCBzZWFyY2gobG9uZyBudW1iZXIsIGludCB5YWt1c3UsIGludCBuLCBpbnQgbCkKICAgIHsKICAgICAgICBpbnQgbmV3WWFrdXN1ID0geWFrdXN1OwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGwgJiYgbnVtYmVyICogcHJpbWVbbl0gPD0gbGltaXQ7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIG5ld1lha3VzdSArPSB5YWt1c3U7CiAgICAgICAgICAgIG51bWJlciAqPSBwcmltZVtuXTsKICAgICAgICAgICAgaWYgKG5ld1lha3VzdSA+IG1heFlha3VzdSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWF4WWFrdXN1ID0gbmV3WWFrdXN1OwogICAgICAgICAgICAgICAgbWF4TnVtYmVyID0gbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlYXJjaChudW1iZXIsIG5ld1lha3VzdSwgbiArIDEsIGkpOwogICAgICAgIH0KICAgIH0KfQ==