反素数:
满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数)。
反素数总结:
http://blog.csdn.net/ACdreamers/article/details/25049767
const int antiprime[]={0,1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,
1260,1680,2520,5040,7560,10080,15120,20160,25200,
27720,45360,50400,55440,83160,110880,166320,221760,
277200,332640,498960,554400,665280
};
const int factorNum[]={0,1,2,3,4,6,8,9,10,12,16,18,20,24,30,32,36,40,48,60,
64,72,80,84,90,96,100,108,120,128,144,160,168,180,
192,200,216,224
};
打表,先出的表表示,反素数,然后那个表代表的是反素数对应的因子的个数。
打表代码:
转:
#include <iostream>
#include <cstring>
#include <cstdio>
#define MAXN 300010
using namespace std;
int antiprime[MAXN+10];
int main()
{
memset(antiprime, 0, sizeof(antiprime));
for(int i = 1; i <= MAXN; i++)
{
for(int j = 1; i*j <= MAXN; j++)
{
antiprime[i*j]++;
}
}
int max = 0;
for(int i = 1; i <= MAXN; i++)
{
if(antiprime[i] > max)
{
max = antiprime[i];
printf("%d ", i);
}
}
printf("\n");
max = 0;
for(int i = 1; i <= MAXN; i++)
{
if(antiprime[i] > max)
{
max = antiprime[i];
printf("%d ", antiprime[i]);
}
}
printf("\n");
return 0;
}