Description

正整数x 的约数是能整除x 的正整数。正整数x的约数个数记为div(x)。例如,1,2,5,10 都是正整数10的约数,且div(10)=4。设a 和b是2 个正整数,a≤b,找出a 和b之间约数个数最多的数x。对于给定的2 个正整数a≤b,计算a 和b之间约数个数最多的数。

Input

输入数据的第1行有2个正整数a和 b,a≤1000000000,b≤1000000000。

Output

若找到的a 和b之间约数个数最多的数是x,将div(x)输出。

Sample Input

1 36

Sample Output

9

其他测试数据:

1 36

9

1000000 2000000

288

999998999 999999999

1024

1 1000000000

1344

100 1000000000

1344

666 666666666

1200

这一题卡了一阵子了,是在看不懂,琢磨不明白书上的代码了,只能照抄了。。。

正整数x可以分解为质因子之积:

$$ x = p_1^{N_1} * p_2^{N_2} * p_3^{N_3} * ... * p_k^{N_k} $$

所以约数div的公式为:

$$ div(x) = (N_1 + 1)(N_2 + 1)...(N_k + 1) $$

期间还参考了:

我自己写的AC代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

int lift;

int right;

lift = cin.nextInt();

right = cin.nextInt();

MaxDiv maxDiv = new MaxDiv();

MaxDiv.primes();

if (lift == 1 && right == 1) {

MaxDiv.max_num = 1;

MaxDiv.numb = 1;

} else {

MaxDiv.max_num = 2;

MaxDiv.numb = 1;

MaxDiv.search(1, 1, 1, lift, right);

}

System.out.println(MaxDiv.max_num);

/*System.out.println(MaxDiv.numb);*/

}

}

class MaxDiv {

public static int max_num;// 存最多的质因子个数

public static int numb;// 存质因子最多的数

public final static int MAXP = 31622;// 普通数组最大的大小

public final static int PCOUNT = 3401;// 素数数组最大的大小

public static int prime[] = new int[PCOUNT + 1];// 素数数组

// 欧拉筛法求素数表

public static void primes() {

int k = 0;

boolean num[] = new boolean[MAXP + 1];

for (int i = 2; i <= MAXP; i++) {

num[i] = true;

}

for (int i = 2; i <= MAXP; i++) {

if (num[i]) {

prime[++k] = i;

}

for (int j = 1; j <= k && prime[j] * i <= MAXP; j++) {

num[prime[j] * i] = false;

}

}

}

// 这个函数没明白, 照抄书上的

public static void search(int from, int tot, int num, int low, int up) {

if (num >= 1)

if ((tot > max_num) || ((tot == max_num) && (num < numb))) {

max_num = tot;

numb = num;

}

if (low == up && low > num)

search(from, tot * 2, num * low, 1, 1);

for (int i = from; i <= PCOUNT; i++) {

if (prime[i] > up)

return;

else {

int j = prime[i];

int x = low - 1;

int y = up;

int n = num, t = tot, m = 1;

// 应该是循环除质因子

while (true) {

m++;

t += tot;

x /= j;

y /= j;

if (x == y)

break;

n *= j;

search(i + 1, t, n, x + 1, y);

}

m = 1 << m;

if (tot < max_num / m)

return;

}

}

}

}

求约数java_最多约数问题(Java)相关推荐

  1. 求销售经理人数最多的层级-Java集合练习题

    终端部门按层级管理销售负责人,即:销售总裁直接对接公司分布在若干个国家的销售负责人,每个国家的销售负责人对接本国各大区负责人,大区负责人对接本区内各省负责人,各省负责人对接本省各市负责人等等-- 这里 ...

  2. python求极限中有算术平方根如何表达_Python求算数平方根和约数的方法汇总

    Python求算数平方根和约数的方法汇总 一.求算术平方根 a= x=int(raw_input('Enter a number:')) if x >= : while a*a < x: ...

  3. 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)

    文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...

  4. 质因数 求约数 c语言,【初等数论】 求一个数有多少约数及所有约数之和、分解质因数...

    今天做题遇见,于是就搜了一下,于是就有了这篇文章.(其实我不知道原理....Orz)我觉得分解质因数的最优算法应该不是我这篇文章中的这个.....谁有好的算法可以给我说一下,谢谢. 1.有多少个约数: ...

  5. 【算法基础15】如何求约数?约数个数?约数之和?最大公约数?

    一.试除法求约数 主要思想:由于当n/a=b时,a和b都是n的约数,即约数总是成对出现,可以在一次循环中同时找到i和n/i两个约数,只需要循环n/i次就能找到所有约数. 例题:求一个数的所有约数,并将 ...

  6. python中math计算平方根的函数_Python求算数平方根和约数的方法汇总

    一.求算术平方根 a= x=int(raw_input('Enter a number:')) if x >= : while a*a < x: a = a + if a*a != x: ...

  7. 数论 - 约数基础 【 试除法求所有约数 + 约数个数和约数之和 + 欧几里得算法-求解最大公约数 】

    数论-约数基础 1.约数定义 约数,又称因数.整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a.a称为b的倍数,b称为a的约数.在大学之前,"约数 ...

  8. 求1 2 3 java_求1+2+3+...+n,Java代码实现

    不使用乘除法.switch.while.else.for.if.case等关键字以及条件判断语句(A?B:C)求1+2+3+...+n的Java代码实现和思路分享. 思路1 代码实现:class as ...

  9. 约数之和 c语言,(c语法百题20)约数之和,约数之和

    (c语法百题20)约数之和,约数之和 知识点: 求约数的算法 for语句,if语句灵活运用. 内容: 键入一个自然数 ,求这个自然数的所有约数之和 输入说明: 一个整数 输出说明: 一个整数 输入样例 ...

最新文章

  1. eclipse c语言_如果你的电脑是windows7/10的环境,用什么编译器学习C语言好?
  2. 关于self.用法的一些总结
  3. leetcode-36-有效的数独
  4. 计算机导论的试题,计算机导论试题
  5. 函数指针使用场景和选择_在N + 1场景中使用@NamedEntityGraph更有选择地加载JPA实体...
  6. 剑指Offer 斐波那契数列
  7. 非对称网络不通 子网掩码是“祸首”
  8. 计算机科学在地理信息科学中的作用,地理信息科学的孕育和发展
  9. java csvwriter 追加_CSV文件每行的末尾追加写数据
  10. 开关电源-反激+单级PFC超低纹波超低THD
  11. 树莓派连接隐藏wifi(2020最新系统实测可用!)
  12. uniapp权限(Android权限)
  13. VS2010+DDK配置
  14. 这 7 款程序员免费在线画图工具,贼好用!
  15. 六维空间:更快、更新、更优秀的教育网IPV6免费资源共享平台!
  16. 【PhotoShop】用自己的照片做个好看的星空头像PS
  17. 在Windows10下给PyCharm安装需要的包
  18. statsmodels.tsa.stattools.adfuller 的用法
  19. seo高手教你seo优化排名该怎么做
  20. Google 应用出海指南针第五期强势火热启动!

热门文章

  1. Ghost的一些使用方法
  2. 过年的气氛为什么几乎全无,内心也没有任何期盼呢?
  3. [Beta] Scrum Meeting 8 - TEAM LESS ERROR
  4. ios开发读取剪切板的内容_iOS开发_iphone 实现剪贴板操作_iphone 复制粘贴功能(转)...
  5. 毕业生档案、户籍、三方协议等问答
  6. 正在空谈「空谈“误国”」
  7. python剪刀石头布小游戏_python小游戏(剪刀石头布)
  8. 从传统投放走向程序化购买, 浅谈户外广告发展前景
  9. 南部一名女子欲跳江轻生,已经被成功营救
  10. 安卓打开cbr文件_什么是CBR和CBZ文件,为什么将它们用于漫画?