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