因数最多的数(DFS,质因数分解,剪枝)
蒜头君对一个数的因数个数产生了兴趣,他想知道在 1 到 n 的范围内,因数个数最多的数是多少。如果有多个这样的数,他想知道最小的那个。
输入格式
第一行一个整数 T,表示数据的组数。
接下来 T 行,每行一个正整数 n。
1≤T≤100,1≤n≤10e16
输出格式
一共输出 T 行,每行一个正整数表示最多因数个数的数。
样例输入
3
10
100
1000
样例输出
6
60
840
思路:
代码:
#include<bits/stdc++.h>
using namespace std;
long long t,n,Max=-0x3fffffff,ans=-0x3fffffff;//Max记录目前最大的因子的个数,ans记录因子个数最多的数的最小的那个
int prime[15]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47};//2*3*5*...*47已经大于10e16了
void dfs(int ind,int m,long long num,long long cnt){//当前枚举到了第几个质数,当前质数最多选多少个,当前的数,当前数的因数个数if(cnt>Max){//如果当前值的因数个数比Max大更新,Max和ansMax=cnt;ans=num;}else if(cnt==Max&&num<ans){//如果因子数相同但该数更小,更新ansans=num;}if(ind==15) return;//如果15个质数都枚举完了就退出for(int i=1;i<=m;i++){//对该质数的个数进行枚举num=num*prime[ind];//不断乘以该质数if(num>n) return;//如果该值大于n则退出dfs(ind+1,i,num,cnt*(i+1));//枚举下一个质数,这里第2个参数是i,是第i个因子次数>=第i+1个因子次数,减少搜索量。 }}
int main(){cin>>t;while(t--){Max=-0x3fffffff,ans=-0x3fffffff;cin>>n;dfs(0,60,1,1);//从第0个质数开始考虑,初始的质数的次数不超过60(2最多选60个),初始的数为1,初始的数的因数个数为1.cout<<ans<<endl;}
}
因数最多的数(DFS,质因数分解,剪枝)相关推荐
- 计蒜客 因数最多的数
样例输入 3 10 100 1000 样例输出 6 60 840 最重要的一个公式: 例如数字6可以分解为21 * 31,所以按照公式,它的因数个数为4(1,2,3,6). 由于任何合数都可以被分解为 ...
- Python判断质数合数,质因数分解并得到所有因数
Python判断质数合数,质因数分解并得到所有因数 判断质数.合数 质因数分解 得到所有正因数 完整程序 运行效果 判断质数.合数 要判断一个大于一的正整数是质数还是合数,只需判断在区间[2, √x] ...
- 使用线性筛进行质因数分解
质因数分解 质因数分解的概念 一个数A=p1k1⋅p2k2⋅⋅⋅pnkn,其中pi为质数恒成立一个数A=p_1^{k_1} \cdot p_2^{k_2} \cdot \cdot \cdot p_n^ ...
- 质数判断及质因数分解 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 0和1不是质数 除了0,1,质数以外其他的数叫合数
题目: 质数判断及质因数分解 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 0和1不是质数 除了0,1,质数以外其他的数叫合数 代码部分: C++实现 #include ...
- 求一个数的所有因数+质因数分解【数论】
先附上所有因数的求法: 我的做法:是今天误打误撞写出来的: http://exam.upc.edu.cn/problem.php?id=5062 然后,我上网找居然没有人写一个高效一点的,我这个做法其 ...
- java质因数算法_Java分解任意输入数的质因数算法的实现示例
这篇文章主要介绍了Java实现分解任意输入数的质因数算法,涉及java数学运算相关操作技巧,需要的朋友可以参考下 本文实例讲述了Java实现分解任意输入数的质因数算法.分享给大家供大家参考,具体如下: ...
- java所有的质因数_Java实现分解任意输入数的质因数算法示例
本文实例讲述了java实现分解任意输入数的质因数算法.分享给大家供大家参考,具体如下: 分解任意输入数的质因数: 质因数概念:任何一个合数都可以写成几个质数相乘的形式.其中每个质数都是这个合数的因数, ...
- java质因数的分解_Java实现分解任意输入数的质因数算法示例
本文实例讲述了Java实现分解任意输入数的质因数算法.分享给大家供大家参考,具体如下: 分解任意输入数的质因数: 质因数概念:任何一个合数都可以写成几个质数相乘的形式.其中每个质数都是这个合数的因数, ...
- 质因数分解求给定正整数的因数个数
正整数因数个数的快速求法 以72为例,将72进行质因数分解,72 = 2*2*2*3*3 = 2^3 * 3^2 将底数2的幂次和底数3的幂次分别加1再相乘 得到72的因数个数 = (3+1) * ( ...
最新文章
- 让关键词排名更稳定提升的优化技巧有哪些?
- 将表单请求提交到本页
- 使用Spring3+Quartz实现定时任务
- javascript中函数参数以及函数中局部变量作用域一点点理解
- 使用Source Monitor检测Java代码的环复杂度
- 3d立体相册特效html网页代码_新闻类网页正文通用抽取器
- win7 更改IP 脚本(自动获取和手动设置多个IP),将里面内容拷贝到记事本另存为set_win7_IP.bat
- 2018 AI趋势:AI芯片更丰富,用机器学习的企业翻倍 | 德勤报告
- 数据结构一些自己没搞懂的点
- c语言早期标准没有数据转换,标准C语言2
- RoR vs. Java
- vps部署ssl,让域名可以https访问的最简单的办法 ssl无法ie访问 https在ie访问报错的处理办法
- Web网页如何实现QQ好友,QQ空间,微博分享
- #Windows server 2019将辅助域控升级为主域控
- android扫码二维码识别二维码
- 计算机管理中打开移动硬盘磁盘必须格式化,最佳解决方案:无法打开移动硬盘分区,并且未格式化解决方案。...
- 计算机视觉中的MAP的理解(mean average precision)
- acme.sh使用阿里云DNS申请Let’s Encrypt的https证书
- 1 Linux Kali忘记用户名教程
- iTOP3A5000_7A2000开发板龙芯全国产处理器LoongArch架构核心主板
热门文章
- 44道javaScript变态题(上)
- 关于随机森林randomforest对结果进行分类的原则的个人理解
- 微信小程序----全局状态管理 (便于全局埋点等操作)
- 在emacs中使用百度翻译
- 怎么看自己的操作系统?
- SP许可证延期需要的东西
- 2023第5届中国(济南)国际福祉及残疾人用品展览会开启招商
- Win10锁屏之后设置自动关闭屏幕的时间
- 异步赠书:12月《Go Web编程》领航
- php zen kaku代表什么,Convert kana one from another (zen-kaku, han-kaku and more) - PHP 7 中文文档...