n 素因子分解中素數p的冪

2021-06-29 14:21:41 字數 1885 閱讀 6360

n!素因子分解中素數p的冪為 [n/p]+[n/(p^2)]+[n/(p^3)]+……

nefu 118 傳送門

從輸入中讀取乙個數n,求出n!中末尾0的個數。

輸入有若干行。第一行上有乙個整數m,指明接下來的數字的個數。然後是m行,每一行包含乙個確定的正整數n,1<=n<=1000000000。

對輸入行中的每乙個資料n,輸出一行,其內容是n!中末尾0的個數。

3

3100

1024

0

24253

對於任意乙個正整數 若對其進行因式分解 那麼其末尾的0必可以分解為2*5 

在這裡 每乙個0 必然和乙個因子5相對應 

但 乙個數的因式分解中因子5不一定對應著乙個0 因為還需要乙個因子2 

而對於n! 在因式分解中  2的因子個數要大於5的因子個數  

所以這題只要求出5的冪就可以了

#include #include #include #include #include #include #include #include #include #define mem(a,x) memset(a,x,sizeof a)

#define eps 1e-8

#define mod 10009

#define maxn 10010

#define maxm 100010

#define inf 99999999

#define ll __int64

#define bug cout<<"here"<9)

print(a/10);

putchar(a%10+'0');

}int main()

printf("%d\n",sum);

}return 0;

}

nefu 119 

傳送門

小明的爸爸從外面旅遊回來給她帶來了乙個禮物,小明高興地跑回自己的房間,拆開一看是乙個很大棋盤(非常大),小明有所失望。不過沒過幾天發現了大棋盤的好玩之處。從起點(0,0)走到終點(n,n)的非降路徑數是c(2n,n),現在小明隨機取出1個素數p, 他想知道c(2n,n)恰好被p整除多少次?小明想了很長時間都沒想出來,現在想請你幫助小明解決這個問題,對於你來說應該不難吧!

有多組測試資料。

第一行是乙個正整數t,表示測試資料的組數。接下來每組2個數分別是n和p的值,這裡1<=n,p<=1000000000。

對於每組測試資料,輸出一行,給出c(2n,n)被素數p整除的次數,當整除不了的時候,次數為0。

2

2 22 3

1

1

#include #include #include #include #include #include #include #include #include #define mem(a,x) memset(a,x,sizeof a)

#define eps 1e-8

#define mod 10009

#define maxn 10010

#define maxm 100010

#define inf 99999999

#define ll __int64

#define bug cout<<"here"<9)

print(a/10);

putchar(a%10+'0');

}int main()

printf("%d\n",sum);

}return 0;

}

大素數測試和大數素因子分解

小黃書第 章p82頁根據合數的拉賓 公尺勒測試可得到素數的必要條件。參考資料。以poj1811 prime test 為例。include include include includeusing namespace std typedef long long ll const int s 20 l...

N 分解素因子及若干問題

將n!表示成 n p1 t1 p2 t2 pi ti pk tk 其中p1,p2 pk是素數,1顯然很容易通過素數篩選求出pi,因為1我們先來看一下對於2這個素因子,把n!分成兩部分,即奇偶兩部分 假設n是偶數 n!1 2 3 4 5 n 2 4 6 1 3 5 因為有n 2個偶數,所以偶數部分可以...

數論 素數篩選法與整數的素因子分解

篩選法 求出n以內的素數,最快的應該是篩選法。篩選法的思路是 要求10000以內的素數,把1 10000都列出來,1不是素數,劃掉 2是素數,所有2的倍數都不是素數,劃掉 取出下乙個倖存的數,劃掉它的所有倍數 直到所有素數找完為止。這種做法的空間複雜度是o n 時間複雜度o n logn const...