import java.util.ArrayList;
class Ideone
{
static int[] prime = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 };
static long limit = 10_0000_0000;
static int maxYakusu;
static ArrayList<Long> list = new ArrayList<>();
public static void main
(String[] args
) {
search
(1,
1,
0,
Integer.
MAX_VALUE); System.
out.
printf("数値: %s, 約数の数: %d%n", list, 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)
{
if (newYakusu > maxYakusu)
{
list.clear();
maxYakusu = newYakusu;
}
list.add(number);
}
search(number, newYakusu, n + 1, i);
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CgpjbGFzcyBJZGVvbmUKewogICAgc3RhdGljIGludFtdIHByaW1lID0geyAyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzcgfTsKICAgIHN0YXRpYyBsb25nIGxpbWl0ID0gMTBfMDAwMF8wMDAwOwogICAgc3RhdGljIGludCBtYXhZYWt1c3U7CiAgICBzdGF0aWMgQXJyYXlMaXN0PExvbmc+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PD4oKTsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQogICAgewogICAgICAgIHNlYXJjaCgxLCAxLCAwLCBJbnRlZ2VyLk1BWF9WQUxVRSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIuaVsOWApDogJXMsIOe0hOaVsOOBruaVsDogJWQlbiIsIGxpc3QsIG1heFlha3VzdSk7CiAgICB9CgogICAgc3RhdGljIHZvaWQgc2VhcmNoKGxvbmcgbnVtYmVyLCBpbnQgeWFrdXN1LCBpbnQgbiwgaW50IGwpCiAgICB7CiAgICAgICAgaW50IG5ld1lha3VzdSA9IHlha3VzdTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBsICYmIG51bWJlciAqIHByaW1lW25dIDw9IGxpbWl0OyBpKyspCiAgICAgICAgewogICAgICAgICAgICBuZXdZYWt1c3UgKz0geWFrdXN1OwogICAgICAgICAgICBudW1iZXIgKj0gcHJpbWVbbl07CiAgICAgICAgICAgIGlmIChuZXdZYWt1c3UgPj0gbWF4WWFrdXN1KQogICAgICAgICAgICB7CiAgICAgICAgICAgIAlpZiAobmV3WWFrdXN1ID4gbWF4WWFrdXN1KQogICAgICAgICAgICAJewoJICAgICAgICAgICAgICAgIGxpc3QuY2xlYXIoKTsKCSAgICAgICAgICAgICAgICBtYXhZYWt1c3UgPSBuZXdZYWt1c3U7CiAgICAgICAgICAgIAl9CiAgICAgICAgICAgIAlsaXN0LmFkZChudW1iZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlYXJjaChudW1iZXIsIG5ld1lha3VzdSwgbiArIDEsIGkpOwogICAgICAgIH0KICAgIH0KfQ==