牛客網 n的約數 (唯一分解定理)

2022-08-20 15:00:23 字數 879 閱讀 3233

n的約數

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

t次詢問,每次給你乙個數n,求在[1,n]內約數個數最多的數的約數個數

第一行乙個正整數t

之後t行,每行乙個正整數n

輸出t行,每行乙個整數,表示答案
示例1

5139

11316

641

66

對於100%的資料,t <= 500 , 1 <= n <= 1000000000000000000

分析:題目前約數最多的個數,根據唯一分解定理有

a=p1^e1*p2^e2*......pk^ek,pi為素數且p1=e2>=e3.......>=ek;

所以列舉低位素數因子的個數進行dfs操作,就能限制到高位素因子的個數,進而節約時間。

**如下:

#include #include 

#include

#include

using

namespace

std;

typedef

long

long

ll;ll prime[

20] = ;

intmaxx;

ll n,t;

void dfs(ll x,int pos,int lim,int num) //

pos是素數下標,lim是低位對高位素數的限制,num是目前的因子個數

}int

main()

return0;

}

唯一分解定理

任意乙個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,乙個數能被唯一地分解成質因數的乘積。因此這個定理又叫做唯一分解定理。c include include include using namespace std int main int num 32 int local...

唯一分解定理

唯一分解定律 又稱為正整數的唯一分解定理,即 每個大於1的自然數均可寫為質數的積,而且這些素因子按大小排列之後,寫法僅有一種方式。當題目有大數相除,求餘數時,精度要求高時.就要運用唯一分解定律 以下唯一分解定律證明 為了真正地證明,分解質因數的方法是唯一的,我們將再次用到反證法。假設存在某些數,它們...

唯一分解定理

problem description 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。input 輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包含乙個正整數x。output 每個測試例...