快速篩可能是大費馬素數的數

2021-07-04 01:31:31 字數 878 閱讀 9806

為什麼寫這樣一篇部落格呢……,原因是今天的多校有道題用到了ntt,然後用雙模數然後中國剩餘定理我被卡到死,直到我中間運算陣列換成了int才卡過。之後我發現,竟然有乙個o(1)的大數快速乘法(進行運算的數都在long long內)。根據這個,我發現ntt完全可以通過尋找乙個超級大的費馬素數來實現(比運算後的係數還大~),代替雙模數的中國剩餘定理的ntt寫法,因為這個常數太大了……

通過我無聊到極點的耐心,我把這個方法寫的更加無腦了,鑑於本人低能,以及方便的前提下,只列舉2的冪次,以及另外的兩個素數,**如下,就是純暴力~

這樣隨便選一組可行的費馬素數,就可以了……前提是這一組確實是素數,233……my

code

:

#include 

using

namespace

std ;

typedef

long

long ll ;

typedef

unsigned

long

long ull ;

const

int maxn = 5005 ;

ll mod ;

ull l_bound = 3e18 , r_bound = 4.5e18 ;//篩取費馬素數的上下界

bool prime[maxn] ;

ll mul ( ll x , ll y )

ll power ( ll a , ll b )

return res ;

}void preprocess ()

}int main ()

break ;

}if ( ok ) break ;}}

}}

return

0 ;}

差異可能是重要的

3位可儲存8個值。n位可儲存2 n值。因為乙個位元組的8位,乙個位元組可以存放2 8 256 的值。變數的大小對大量的資訊可以儲存 這是更大的變數可以容納更多的限制。我們將進一步解決這個問題的時候,我們進入不同型別的變數。第二,電腦有乙個有限的可用記憶體。每一次我們宣告乙個變數,那游離的記憶是只要用...

你可能是自由的

序 一直都愛吃甜,甜到微微的澀。一直都想寫作,寫到天昏地暗。一直追逐自由,飛到天涯海角。孤獨的牧羊人在廣廖的草原牧著他的羊兒們,一生孤獨的他在3歲那年,父母已離開人世,剩下相依為命的奶奶也在10歲時離他而去,留下的只有兩頭羊兒。那一年,他哭的是那麼傷心,周圍嬉皮笑臉的人帶著乙個悲傷的面具,假惺惺的來...

這可能是不可取的!

雖然消極期望功能的一部分,我們給它乙個整數而不是。然而,由於分數具有建構函式的願意接受乙個整數,編譯器將使用此建構函式隱式轉換為整數6轉化為分數的物件,然後將其複製到makenegative 初始化引數f.因此,上面的程式列印 6 1 這種隱式轉換為各種初始化 直接 統一和複製 用於隱式會話的建構函...