在網上搜到的都是些求質因子的,剛好今天遇到一道題,題目思路錯了,就碼了乙個求乙個數所有因子的模板。
再根據公式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 對這個數求平方根,如果這個數能被這...