快速求n 的質因數及個數

2021-10-05 14:01:43 字數 1123 閱讀 9912

一般要進行質因數分解時,我們是for迴圈對每個數進行質因數分解,但少數的情況下,數字太大了,題目不允許這樣的做法,所以我們需要學會一種更快的方法來求質因數。

我們來乙個樣例說明一下:

123

4567

89我們

求得在9

!中2的

個數12

34首先

我們計算

出2的倍

數的個數

:8/2

=412

其次我們

計算出4

的倍數的

個數:8

/4=2

1最後我

們解出第

三層的2

的個數:

8/8=

1\begin 1 & 2 & 3&4&5&6&7&8&9& 我們求得在9!中2的個數\\ &1& & 2& & 3&&4&& 首先我們計算出2的倍數的個數:8/2=4 \\ &&&1 & &&&2 & & 其次我們計算出4的倍數的個數: 8/4=2\\ &&&&&&&1&& 最後我們解出第三層的2的個數: 8/8=1\\ \end

1​21​3

​421

​5​6

3​7​

8421

​9​我

們求得在

9!中2

的個數首

先我們計

算出2的

倍數的個

數:8/

2=4其

次我們計

算出4的

倍數的個

數:8/

4=2最

後我們解

出第三層

的2的個

數:8/

8=1​

我們把4+2+1=7,所以9!中一共出現了7個2。

**:

//x表示要求的質數,函式的作用是求出x的個數,n表示要求的n!

long

long

cal(

long

long n,

long

long x)

return ret;

}

例題:

cf: c. trailing loves (or l』oeufs?)

求整數N的質因數

暴力解決 先找出整數n的所有因數,再提出到其中不是質數的因數。有一種題,整數n由其所有質因數的積來表示 eg 35 3 5,24 2 2 2 3如何求解的問題 include include include includeusing namespace std int main for vector...

質因數的個數

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1對於每組資料,輸出n的質因數的個數。12020055注意1不是n的質因數 若n為質數,n是n的質因數。include include c...

質因數的個數

求正整數n n 1 的質因數的個數。相同的質因數需要重複計算。如120 2 2 2 3 5,共有5個質因數。可能有多組測試資料,每組測試資料的輸入是乙個正整數n,1示例1 120 5 pat.cpp 定義控制台應用程式的 include stdafx.h include stdio.h includ...