基礎數論 反素數 ural1748

2021-07-22 10:50:39 字數 603 閱讀 6338

題意:求最小的0-n中約數個數最多的數,並輸出其約數個數。

這道題目需要用到反素數的知識。

首先反素數滿足以下性質:

反素數一定為連續的素數相乘;

第k個質因數的冪≥第(k-1)個。

剩下需要做的就只是dfs了。^_^

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int inf=1e9;

int p[16]=;

int sum;

ll ans,n;

void dfs(int dep,int limit,ll tmp,int num)

if(num==sum && tmpfor(int i=1;i<=limit;i++)

dfs(dep+1,i,tmp*=p[dep],num*(i+1));

}}int main()

return

0;}

數論1 素數 約數 反素數

素數是指只能被自身整除和被1整除的數 大於1的自然數,1不是素數 不是素數的數為合數 常見的題型有 素數的判定 素數的篩選兩種題型 素數的篩選 const int n 1000001 int primes n cnt primes存素數 cnt 存素數的個數 bool st n 存數n是否被篩過 v...

zoj2562 搜尋 數論 反素數

題目大意 求n以內因子數量最多的數 n的範圍為1e16 其實相當於求n以內最大的反素數。由素數中的 算數基本原理 設d a 為a的正因子的個數,則 d n a1 1 a2 1 an 1 又由反素數的性質2 p 2 t1 3 t2 5 t3 7 t4.必然t1 t2 t3 我們可以指定搜尋策略和剪枝 ...

數論基礎之素數,約數

關於約數 唯一分解定理 任何數都可由素因子之積構成 int p 100 a 100 cnt void divide int n if n 1 for int i 1 i cnt i cout 方法2 離線做法,預處理出乙個質因子樹。預處理o nlogn 查詢乙個數o logn void init v...