FFT用到的各种素数
这几天在写 FFT,由于是在模意义下的,需要各种素数,然后就打了个表方便以后查。 如果 $r \cdot 2^k + 1$ 是个素数,那么在$\bmod r \cdot 2^k + 1$意义下,可以处理 $2^k$ 以内规模的数据,
$2281701377=17\cdot 2^{27}+1$ 是一个挺好的数,平方刚好不会爆 long long
$1004535809=479\cdot 2^{21}+1$ 加起来刚好不会爆 int
也不错
还有就是 $998244353=119 \cdot 2^{23}+1$
下面是刚刚打出来的表格($g$ 是$\bmod (r \cdot 2^k + 1)$的原根)
$r \cdot 2^k + 1$ | $r$ | $k$ | $g$ |
---|---|---|---|
3 | 1 | 1 | 2 |
5 | 1 | 2 | 2 |
17 | 1 | 4 | 3 |
97 | 3 | 5 | 5 |
193 | 3 | 6 | 5 |
257 | 1 | 8 | 3 |
7681 | 15 | 9 | 17 |
12289 | 3 | 12 | 11 |
40961 | 5 | 13 | 3 |
65537 | 1 | 16 | 3 |
786433 | 3 | 18 | 10 |
5767169 | 11 | 19 | 3 |
7340033 | 7 | 20 | 3 |
23068673 | 11 | 21 | 3 |
104857601 | 25 | 22 | 3 |
167772161 | 5 | 25 | 3 |
469762049 | 7 | 26 | 3 |
998244353 | 119 | 23 | 3 |
1004535809 | 479 | 21 | 3 |
2013265921 | 15 | 27 | 31 |
2281701377 | 17 | 27 | 3 |
3221225473 | 3 | 30 | 5 |
75161927681 | 35 | 31 | 3 |
77309411329 | 9 | 33 | 7 |
206158430209 | 3 | 36 | 22 |
2061584302081 | 15 | 37 | 7 |
2748779069441 | 5 | 39 | 3 |
6597069766657 | 3 | 41 | 5 |
39582418599937 | 9 | 42 | 5 |
79164837199873 | 9 | 43 | 5 |
263882790666241 | 15 | 44 | 7 |
1231453023109121 | 35 | 45 | 3 |
1337006139375617 | 19 | 46 | 3 |
3799912185593857 | 27 | 47 | 5 |
4222124650659841 | 15 | 48 | 19 |
7881299347898369 | 7 | 50 | 6 |
31525197391593473 | 7 | 52 | 3 |
180143985094819841 | 5 | 55 | 6 |
1945555039024054273 | 27 | 56 | 5 |
4179340454199820289 | 29 | 57 | 3 |
以下是旧版博客的评论
-
2015-05-01 23:40:14从多项式乘法到快速傅里叶变换 | Miskcoo's Space (#1)[…] FNT 中,我们可以用原根替代单位根,这里已经有了一些数 p […]
-
2016-04-25 19:26:09dna049 (#2)简直想到一块去了0.0
-
2017-02-09 13:43:45dp66 (#3)求打表源代码
-
2017-02-09 15:15:11miskcoo (#4) reply to源码找不到了…… 不过当时是这样打表的:对于每个 $k$,找到最小 $r$ 满足 $r\cdot 2^k+1$ 是素数
-
2017-02-28 13:35:35ztzshiwo (#5)感觉998244353=7*17*2^23+1这个数也很重要啊,博主可以考虑加上
-
2017-11-20 09:22:22[模板]ntt和fft - 槿叶轩 (#6)[…] 以下是NTT用到的相关素数,转自:http://blog.miskcoo.com/2014/07/fft-prime-table […]
-
2017-12-20 21:32:11ZTZSHIWO (#7)说错了。。。985661441=235⋅2^22+1
-
2018-03-17 15:18:08uoj34 多项式乘法 ntt – Elijahqi-Blog (#8)[…] FNT 中,我们可以用原根替代单位根,这里已经有了一些数 […]
-
2018-07-09 15:33:21。 (#9)15564440312192434177=2^59*3^3 不超过64bit 最小原根是5 比它大的都爆int64了(83010348331692982273=2^63*9+1很可惜) 另外850705917302346158658436518579420528641=5*2^127+1刚刚好爆掉int128 215334935317156371410416743765415821313=2^121*3^4+1倒是在128bit下活得很滋润
-
2018-08-16 22:52:30zhouzhendong (#10)建议加上一个: 985661441