因数最多的数【DFS】

蒜头君探索1到n范围内因数最多的数,发现线性查找不可行。通过枚举质数的指数来解决,其中前15个质数的乘积超过10^16。枚举时遵循质数指数递减原则以找到最小的数,并在过程中进行剪枝优化,当所构数字超过n时停止。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目:

蒜头君对一个数的因数个数产生了兴趣,他想知道在1~n的范围内,因数个数最多的数是多少。如果有多个这样的数,他想知道最小的那个。

 

输入格式

第一行一个整数T,表示数据的组数

接下来T行,每行一个正整数n

1<=T<=100,1<=N<=10^16

输出格式 一共输出T行,每行1个正整数表示最多因数个数的数

I

Input:
3
10
100
1000

Output:
6
60
840

 二、分析

这个数的范围在10^16,显然线性找一遍是不能承受的。

解决的一种方式是枚举法。我们知道一个数N可以表示成N = \prod_{x = 1}^{n}pi^{ki} ,其中pi为质数。他的因数个数为\prod (ki+1)

如12 = 2^2 * 3…^1,那么他的因数个数有(2 + 1)×(1+1)&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值