反素数

中文名 反素数
性质 从2开始连续的质数
目录导航

性质

性质一:一个反素数的质因子必然是从2开始连续的质数.

性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....

算法实现

C语言实现:

#include

typedef long long ll;

const int prime= {1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};

ll maxsum, bestnum, n;

void getantiprime(ll num, ll k,ll sum,int limit)

{

//num:当前枚举到的数,k:枚举到的第k大的质因子;sum:该数的约数个数;limit:质因子个数上限;

int i;

ll temp;

if(sum > maxsum)

{

maxsum = sum;

bestnum = num; //如果约数个数更多,将最优解更新为当前数;

}

if(sum==maxsum && bestnum > num)

bestnum = num; //如果约数个数相同,将最优解更新为较小的数;

if(k > 15)

return;

temp = num;

for(i=1; i<=limit; i++) //开始枚举每个质因子的个数;

{

if(temp*prime[k] > n)

break;

temp = temp * prime[k]; //累乘到当前数;

getantiprime(temp, k+1, sum*(i+1), i); //继续下一步搜索;

}

}

int main(void)

{

scanf("%lld", &n);

getantiprime(1,1,1,50);

printf("%lld\n", bestnum);

return 0;

}

相关百科
返回顶部
产品求购 求购