求n以內的所有因子數

2021-06-23 00:50:29 字數 638 閱讀 1618

在網上搜到的都是些求質因子的,剛好今天遇到一道題,題目思路錯了,就碼了乙個求乙個數所有因子的模板。

再根據公式n=p1^x1*p2^x2……pm^xm,pi表示質因子數,xi表示其指數,從而可以看出n的所有因子都是可以通過質因子組合而來,並且有n的因子個數等於(x1+1)*(x2+1)*……(xm+1)

所以該模板的複雜度為o(√n)+因子數

#include#include#include#includeusing namespace std;

int fac[5000001];

int cou[5000001];

mapmp;

map::iterator it;

//第幾個數,該數第幾個,總共多少個數 ,是否組合數

void dfs(int cur,int n,long long num) }}

void getfac(long long temp)

n++;

} }if(temp!=1)

mp.clear();

dfs(0,n,1);

}void slove(long long num)

int main(void)

return 0;

}

求N以內的親密數

親密數的含義 如果整數a的全部因子 包括1,不包括a本身 之和等於b 且整數b的全部因子 包括1,不包括b本身 之和等於a,則將整數a和b稱為親密數。那麼怎麼求n以內所有的親密數,如下 include intmain for n 0,i 1 i b 2 i 計算b的各因子,各因子之和存於n if n...

求N以內的所有素數

如下 include stdafx.h include conio.h include math.h include malloc.h typedef long long prime typedef struct pn 構造素數節點 struct pn next pn static pn prime...

求n以內的素數

求n以內素數。素數又稱質數,它是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。有兩種方法 篩選法和開根號法 篩選法 從小到大篩去乙個已知素數的所有倍數。依次刪除可被2整除,3整除。的數字,剩下的則為素數 開根號法 如果乙個數 2 對這個數求平方根,如果這個數能被這...