n的約數
時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 262144k,其他語言524288k
64bit io format: %lld
t次詢問,每次給你乙個數n,求在[1,n]內約數個數最多的數的約數個數
第一行乙個正整數t之後t行,每行乙個正整數n
輸出t行,每行乙個整數,表示答案示例1
513911316
64166
對於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 每個測試例...