Java算法课作业2——最小公倍数和最大公约数问题

Java算法课作业2——最小公倍数和最大公约数问题

题目要求

1.题目描述

输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。
  条件:1.P、Q是正整数
     2.要求P、Q以xO为最大公约数,以yO为最小公倍数。
  试求,满足条件的所有可能的两个正整数的个数。

2.输入数据

两个正整数
输出数据

满足条件的所有可能的两个正整数的个数
样例输入

3 60

3.样例输出
4

4.样例说明

说明:(不用输出)此时的 P  Q 分别为:
            3 60
            15 12
            12 15
            60  3
所以,满足条件的所有可能的两个正整数的个数共4种

相关数学知识

  1. 算数基本定理、
    设正整数 n>1, 则 n 可唯一地表示为:

    其中 p1<p2<,…, <ps 是 s 个相异的素数, 指数ki都是正整数。 此定理又称作唯一析因定理(unique factorization theorem) 。 该表达式称作整数 n 的素因子分解。

  2. 最大公约数
    设 a 和 b 是两个不全为 0 的整数,若整数 d 满足 d|a 且 d|b, 则称 d 是a, b 的公因子(common divisor),也称最大公约数。

所有公因子中最大的称作 a 与 b 的最 大 公 因 子 ( greatest common divisor) , 记作GCD(a, b)

  1. 最小公倍数
    设 a 和 b 是两个不全为 0 的整数,若整数 m 满足 a|m 且 b|m , 则称 m是 a, b 的公倍数(common multiple)

所有公倍数中最小的正整数称作a与b 的 最 小 公 倍 数 ( least common multiple) , 记作 LCM(a, b)

  1. 性质
    对任意的正整数a有:

GCD(0, a)=a
GCD(1, a)=1
LCM(1, a)=a

  1. 推论
    设a,b是正整数,则

思想

设gcd(p,q) = G lcm(p, q) = L,当前GL已知。

根据lcm性质 p*q/G = L 且 p|G q|G (整除)

则两边同时除G

p/G * q/G = L / G = s(已知),由gcd性质可知 p/G与q/G互质

则原问题就变为了x*y=s 并且gcd(x, y)=1

遍历x=1——sqrt(s),若y=s/x为整数,则说明能够满足xy=s,再去判断xy是否互质。xG与yG即为满足条件的p,q。因为只取了1——sqrt(s),最后的个数count需要2。

易错点

写的时候错了好几次,主要有一下地方需要注意:

    <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值