階乘質因數分解

2021-07-25 03:41:42 字數 1039 閱讀 8934

時間限制:

3000

ms  |  記憶體限制:

65535

kb難度:

2 描述

給定兩個數n,m,其中m是乙個素數。

將n(0<=n<=2^31)的階乘分解質因數,求其中有多少個m。

注:^為求冪符號。

輸入

第一行是乙個整數s(0

輸出輸出m的個數

樣例輸入

3

100 5

16 2

1000000000 13

樣例輸出

24

1583333329

[html]view plain

copy

#include

<

stdio.h

>

int main()  

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

}  }  

思路:給定兩個數m,n

求m!分解質因數後因子n的個數。

這道題涉及到了大數問題,如果相乘直接求的話會超出資料型別的範圍。

下面給出一種效率比較高的演算法,我們一步一步來。

m!=1*2*3*……*(m-2)*(m-1)*m

可以表示成所有和n倍數有關的乘積再乘以其他和n沒有關係的

=(n*2n*3n*......*kn)*ohter     other是不含n因子的數的乘積   因為 kn<=m 而k肯定是最大值  所以k=m/n

=n^k*(1*2*......*k)*other  

=n^k*k!*other     

從這個表示式中可以提取出k個n,然後按照相同的方法迴圈下去可以求出k!中因子n的個數。

每次求出n的個數的和就是m!中因子n的總個數。

質因數分解

題目16 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完 成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新...

質因數分解

短除法 求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法 和除法的性質差不多,還可以用來求多個個數的公因式 求 最大公因數的一種方法,也可用來求 最小公倍數。求幾個數最大公因數 的方法,開始時用觀察比較的方法,即 先把每個數的因數找出來,然後再找出公因數,最...

質因數分解

講乙個數分解為幾個質數相乘的結果 int a maxn 用來存質因數 int b maxn 用來存質因數的個數 int main if n 1 不能忘記這一步操作 輸出 第1種寫法 a a a b b b b c c printf 第一種寫法 for int i 1 i tot i else pri...