反素數定義:
對於任何正整數n,其約數個數為f(n),例如f(6)=4,如果某個正整數n滿足:對任意的正整數i(0性質:
乙個反素數的所有質因子必然是從2開始的連續若干個質數,因為反素數是保證約數個數為x的這個數n盡量小
同樣的道理,如果n=2t1*3t2…
t1>=t2>=t3>=t4>=t5…
在acm競賽中,最常見的問題如下:
(1)給定乙個數,求乙個最小的正整數,使得的約數個數為n
(2)求出中約數個數最多的這個數
例題:b - strangestandard hdu - 4133
這個題的問題也就是問題2
**如下:
#include
#include
using namespace std;
typedef
long
long ll;
ll resultsum;
ll lastresult;
ll n;
ll prime=
;void
dfs(ll result,ll k,ll sum,ll limit)
if(sum==resultsum && result < lastresult)
if(k>16)
return
; ll temp = result;
for(
int i=
1;i<=limit;i++
) temp *
= prime[k]
;dfs
(temp,k+
1,sum*
(i+1
),i);}
}int
main()
return0;
}
還有個是找多少個約數的c - number with the given amount of divisors codeforces - 27e
#include
#include
#include
using namespace std;
int prime=
;typedef
long
long ll;
ll n;
//約數不能超過這個範圍
ll lastresult=
1e18
;ll number=
1e18
;void
dfs(ll result,ll sum,ll k,ll limit)
if(k>16)
ll temp=result;
for(
int i=
1;i<=limit;i++)}
intmain()
反素數還是比較有用的,這一塊還得繼續加強。 python打反素數 反素數求解 反素數打表
問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0 現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1...
反素數求解 反素數打表
問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1 ...
反素數求解 反素數打表
問題描述 對於任何正整數x,起約數的個數記做g x 例如g 1 1,g 6 4.如果某個正整數x滿足 對於任意i 0現在給乙個n,求出不超過n的最大的反素數.比如 輸入1000 輸出 840 思維過程 求 1.n 中約數在大的反素數 求約數最多的數 如果求約數的個數 756 2 2 3 3 7 1 ...