import java.math.BigInteger;
import java.util.BitSet;
import java.util.Scanner;
/*
プログラミングのお題スレ Part13
//mevius.5ch.net/test/read.cgi/tech/1549160513/335
335 名前:デフォルトの名無しさん[sage] 投稿日:2019/02/23(土) 12:44:52.28 ID:W0y17tlk
(略)
ちょっと高度化したお題
素数階乗n#を実装せよ
ただし素数階乗とは与えられた整数n以下のすべての素数の積である
例
1#=1
3#=4#=6
5#=30
*/
class Ideone
{
public static void main
(String[] args
) {
try (Scanner in
= new Scanner
(System.
in)) {
while (in.hasNextInt())
{
int n = in.nextInt();
System.
out.
printf("%d#=%d%n", n, primeFactorial
(n
)); }
}
}
{
int sqrt
= (int) Math.
sqrt(n
); for (int i = 2; i <= sqrt; i = bs.nextClearBit(i + 1))
{
for (int j = i; j <= n; j += i) bs.set(j);
}
for (int i = bs.nextClearBit(sqrt + 1); i <= n; i = bs.nextClearBit(i + 1))
{
}
return result;
}
}
aW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOwppbXBvcnQgamF2YS51dGlsLkJpdFNldDsKaW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKLyoK44OX44Ot44Kw44Op44Of44Oz44Kw44Gu44GK6aGM44K544OsIFBhcnQxMyAKLy9tZXZpdXMuNWNoLm5ldC90ZXN0L3JlYWQuY2dpL3RlY2gvMTU0OTE2MDUxMy8zMzUKCjMzNSDlkI3liY3vvJrjg4fjg5Xjgqnjg6vjg4jjga7lkI3nhKHjgZfjgZXjgpNbc2FnZV0g5oqV56i/5pel77yaMjAxOS8wMi8yMyjlnJ8pIDEyOjQ0OjUyLjI4IElEOlcweTE3dGxrCijnlaUpCuOBoeOCh+OBo+OBqOmrmOW6puWMluOBl+OBn+OBiumhjArntKDmlbDpmo7kuZduI+OCkuWun+ijheOBm+OCiArjgZ/jgaDjgZfntKDmlbDpmo7kuZfjgajjga/kuI7jgYjjgonjgozjgZ/mlbTmlbBu5Lul5LiL44Gu44GZ44G544Gm44Gu57Sg5pWw44Gu56mN44Gn44GC44KLCuS+iwoxIz0xCjMjPTQjPTYKNSM9MzAKKi8KY2xhc3MgSWRlb25lCnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgdHJ5IChTY2FubmVyIGluID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKSkKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlIChpbi5oYXNOZXh0SW50KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCBuID0gaW4ubmV4dEludCgpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiVkIz0lZCVuIiwgbiwgcHJpbWVGYWN0b3JpYWwobikpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBCaWdJbnRlZ2VyIHByaW1lRmFjdG9yaWFsKGludCBuKQogICAgewogICAgICAgIGlmIChuIDwgMCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigpOwogICAgICAgIEJpZ0ludGVnZXIgcmVzdWx0ID0gQmlnSW50ZWdlci5PTkU7CgogICAgICAgIEJpdFNldCBicyA9IG5ldyBCaXRTZXQoKTsKICAgICAgICBpbnQgc3FydCA9IChpbnQpIE1hdGguc3FydChuKTsKICAgICAgICBmb3IgKGludCBpID0gMjsgaSA8PSBzcXJ0OyBpID0gYnMubmV4dENsZWFyQml0KGkgKyAxKSkKICAgICAgICB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDw9IG47IGogKz0gaSkgYnMuc2V0KGopOwogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoQmlnSW50ZWdlci52YWx1ZU9mKGkpKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IGJzLm5leHRDbGVhckJpdChzcXJ0ICsgMSk7IGkgPD0gbjsgaSA9IGJzLm5leHRDbGVhckJpdChpICsgMSkpCiAgICAgICAgewogICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkoQmlnSW50ZWdlci52YWx1ZU9mKGkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9Cn0K