目录
一、定义
反素数:对于任何正整数,其约数个数记为
,例如
,如果某个正整数
满足:对任意的正整数
,都有
,那么称
为反素数。
二、性质
(1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数
尽量小
(2)同样的道理,如果,那么必有
三、常见问题
(1)给定一个数,求一个最小的正整数
,使得
的约数个数为
void dfs(int k,int num,ull x)
{
if(num>n)return;
if(num==n && ans>x)ans=x;
s[k]=0;
while(x*prime[k]<=ans && s[k]<s[k-1])
{
x*=prime[k];
s[k]++;
dfs(k+1,num*(s[k]+1),x);
}
(2)求出中约数个数最多的这个数
//k:枚举到第k大的因子 num:约数的个数 x:当前枚举到的数
void dfs(int k,int num,LL x)
{
if(k>16)return;
if(num>ansnum || (num==ansnum && x<ans))
{
ans=x;
ansnum=num;
}
s[k]=0;
while(x*prime[k]<=n && s[k]<s[k-1])
{
x*=prime[k];
s[k]++;
dfs(k+1,num*(s[k]+1),x);
}
}