反质数问题,求不大于n的最大反质数
反质数:设f(n)表示n个约数的个数,如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数我们都知道对于任意一个数n,都可以用质数乘积的形式表示出来:x = p1^k1+p2^k2...pn^kn一个数n如果可以表示成 n = p1^k1 + p2^k2, 那么它的约数的个数就是 (k1+1)*(k2+1)::k1个p1,可以产生k1个约数,分别是p1^1, p1^2...p1^k1, 同理k2个p2那么这k1个约数与k2个约数分别相乘,又会得到k1*k2个约数总的约数的个数就是 k1*k2+k1+k2+1(还有就是1,也是n的一个约数,不要忘记)
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 using namespace std; 6 7 typedef long long LL; 8 int p[]={2,3,5,7,11,13,17,19,23,29}; 9 10 LL n, ans, cc; 11 12 void dfs(int pos, int cnt, LL sum){ //pos,p数据的索引;cnt,约数的个数;sum,当前反质数的值 13 if(cnt > cc){ 14 ans = sum; 15 cc = cnt; 16 } 17 if(cnt == cc && ans > sum) 18 ans = sum; 19 if(pos>=10) return; 20 for(int i=1; ; ++i){ 21 sum*=p[pos]; 22 if(sum > n) break; 23 dfs(pos+1, cnt*(i+1), sum); 24 } 25 } 26 27 int main(){ 28 cin>>n; 29 ans = 0; 30 dfs(0, 1, 1); 31 cout<<ans<<endl; 32 return 0; 33 }
转载于:https://www.cnblogs.com/hujunzheng/p/4415544.html
反质数问题,求不大于n的最大反质数相关推荐
- php算法不大于n的质数,php求不大于n的质数
php求不大于n的质数: 使用循环遍历.当为质数时加入list中public class Test4 { public static void main(String[] args) { Test4 ...
- 求不大于n的全部质数(素数 C++)
题目描述 输入正整数n(n>=2),求不大于n的全部质数 代码 [方法一](定义法直接求) #include <iostream> using namespace std;int m ...
- 埃拉托色尼筛法求不大于n的质数序列
埃拉托色尼筛法求不大于n的质数序列 主要思想: 从2开始,将待选序列中2的倍数全部剔除,在此基础上,将3的倍数全部剔除,同时循环这个过程,到最后,得到的序列就是我们所要求的所有序列 Java代码实现: ...
- 相约2008:2008是一个合数,求出此合数最多由多少个最小不同质数和组成, 并按要求从小到大输出这些质数
提示: 代码存在问题,这里找出 2008 最多由多少个不同的质数和组成,原先的思路是从最小开始入数组,直到总和大于2008,然后开始剔除,但是这种方法不对 这里为了方便考虑,可以试着将 2008 替换 ...
- 质数判断及质因数分解 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 0和1不是质数 除了0,1,质数以外其他的数叫合数
题目: 质数判断及质因数分解 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 0和1不是质数 除了0,1,质数以外其他的数叫合数 代码部分: C++实现 #include ...
- python1到1000的质数_python求第1000个质数值的简单示例
这篇文章主要为大家详细介绍了python求第1000个质数值的简单示例,具有一定的参考价值,可以用来参考一下. 对用python求第1000个质数的值感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌 ...
- c语言程序找出500以内的所有素数,c语言求出给定范围内的所有质数
程序功能: 输入一个整数,要求打印出这个整数以内的所有质数. 程序示例: #include #include #include bool IsPrime(int x) { bool bResult = ...
- 计算100以内最大质数和求100以内的质数
#计算100以内最大质数 for n in range(100,1,-1):#如果n==2时则最大质数为2if n==2:print('100以内最大质数为2')#判断是否为偶数if n%2==0:c ...
- 输入两个质数的乘积,求乘数中较大的那个质数
已知正整数n是两个不同质数的乘积,编程求出其中较大的那个质数. 输入:包含一个正整数n(6≤n≤1000) 输出:包含1个正整数p,即较大的那个质数. 样例: 输入:21 输出:7 分析: 利用百钱买 ...
最新文章
- 0基础该如何学Python?这些方法你必须了解
- Java 集合类(一)
- python 混合整数规划_matlab求解混合整数规划的困惑
- HTC与酷派 不是冤家不聚头
- Windows Phone 7 MVVM模式通讯方式之实现Command
- 135. Leetcode 46. 全排列 (回溯算法-排列问题)
- codevs 1230 元素查找
- 如何创建sequence
- 删除windows7中的“兼容性疑难解答”右键菜单
- C++从vector中删除指定元素
- C/C++之vector的内存管理和效率
- Linux+Tomcat建站笔记(JDK,Mysql,Vsftpd,Iptables等配置)
- libuv 原理_Nodejs的运行原理-libuv篇
- windows api学习笔记-键盘钩子
- centos6.5 安装mono
- 高通HAL层之Sensor HAL
- Linux下的GCC和Windows下Visual Studio的编译所生成的文件作用
- TextBox显示提示信息
- windows下qt的环境配置
- Ubuntu语言设置英文
热门文章
- python运行空白_执行时空白tkinter窗口
- 让代码更简洁 和@Autowired说分手, 迎接 @RequiredArgsConstructor注解
- (进阶篇)Redis6.2.0 集群 主从复制_搭建_01
- Windows环境 下载、安装、使用 RabbitMQ_(入门试炼_第1篇)
- React简介及基础用法
- 接口的定义与实现(重要)
- html-按钮和多选框
- java des加密类_java的DES加密解密辅助类
- oracle19c连接MySQL_oracle19c的安装和使用navicat连接oracle数据库
- pbl和sbl_谈PBL和SBL教学法结合模式