0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

同构数的概念

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-07 16:21 次阅读

今天看到一个比较有意思的概念,叫做同构数。同构数是一个数字,它的平方数与数字本身的尾数相同。

例如,25是一个同构数,因为25的平方是625,它的结尾是25。同样地,76是一个同构数,因为76的平方是5776,同样以76结尾。

判断一个数是否是同构数

有许多算法可以用来确定一个数字是否是同构,接下来我们选几种来看看。

在数字上循环并进行比较

验证一个数字是否同构大概有以下几个步骤:

  1. 计算数字平方数
  2. 获取平方数的最后一位数字并与数字的最后一位数字进行比较 如果最后一位数字不相等,则该数字不是一个同构数 如果最后一位数字相等,则进入下一步
  3. 删除数字和平方的最后一位数字
  4. 重复步骤2/3,直到数字的所有数字都得到比较

上述方法以相反的方式对输入数字的数字进行循环。

我们现在写一个Java程序来实现, isAutomorphicUsingLoop()方法将一个整数作为输入,并检查它是否是同构数。

public boolean isAutomorphicUsingLoop(int number) {
    int square = number * number;

    while (number > 0) {
        if (number % 10 != square % 10) {
            return false;
        }
        number /= 10;
        square /= 10;
    }
    
    return true;
}

在任何一个步骤,如果最后一位数字不相等,我们就返回false 。否则,我们就去掉最后一个数字,对number的剩余数字重复这个过程。

我们可以通过以下的代码来验证这个方法是否可行。

测试用例:

assertTrue(AutomorphicNumber.isAutomorphicUsingLoop(76));
assertFalse(AutomorphicNumber.isAutomorphicUsingLoop(25));

直接比较数字

当然我们还可以用更直接的方法来确定一个数字是否是同构数。

  1. 得到数字并计算数字的位数n
  2. 计算数字的平方数
  3. 从平方数中得到最后的n个数字,如果平方数中的最后n个数字与原始数字相同,则该数字是同构的,否则就不是同构数

在这种情况下,我们不需要对数字的位数进行循环。我们可以直接使用Math库来完成数字的长度以及平方数的最后几位的计算。

代码示例:

public boolean isAutomorphicUsingMath(int number) {
    int square = number * number;

    int numberOfDigits = (int) Math.floor(Math.log10(number) + 1);
    int lastDigits = (int) (square % (Math.pow(10, numberOfDigits)));

    return number == lastDigits;
}

与第一种方法类似,我们先计算number的平方。现在我们不是逐一比较numbersquare的最后一位数字,而是通过使用 Math.floor() 一次性得到 number 的总的 numberOfDigits 。然后通过使用 Math.pow()square提取尽可能多的数字。最后,我们将输入的number与提取的数字lastDigits进行比较。

如果numberlastDigits相等,这个数字就是同构的,我们返回 true ,否则,我们返回 false

测试用例:

assertTrue(AutomorphicNumber.isAutomorphicUsingMath(76));
assertFalse(AutomorphicNumber.isAutomorphicUsingMath(25));

总结

在这篇文章中,我们了解了什么是同构数,还学习了几种确定一个数是否为同构数的方法,以及相应的Java程序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数字
    +关注

    关注

    1

    文章

    1693

    浏览量

    51382
  • 代码
    +关注

    关注

    30

    文章

    4823

    浏览量

    68970
  • java程序
    +关注

    关注

    0

    文章

    12

    浏览量

    7585
收藏 人收藏

    评论

    相关推荐

    基于Iceberg概念格叠置半集成的全局闭频繁项集挖掘算法

    成构造全局Iceberg概念格的可行性,进而提出一个基于Iceberg概念格叠置半集成的频繁概念生长分布算法(Frecogd),并且把它应用于同构分布式环境下的全局闭频繁项集挖掘过程中
    发表于 04-24 10:02

    labview寻找同构,你准备好了吗?

    本帖最后由 zhihuizhou 于 2011-12-15 17:13 编辑 同构 是会出现在它的平方的右边的 , 例如 5*5=25 (5在25的右边) , 6×6=36 (6在36
    发表于 12-13 15:48

    labview同构最快和最小VI程序展示

    本帖最后由 zhihuizhou 于 2011-12-15 17:21 编辑 同构题目要求:https://bbs.elecfans.com
    发表于 12-15 17:11

    步进电机相关参数的概念是什么?

    一、步进电机相关概念 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲。 角位移:角位移就是步进电机的转轴转动行驶的位移。1.步进电机的相、线、极性...
    发表于 07-07 08:03

    介绍步进电机使用的几个概念

    1.步进电机使用的几个概念:电机转动一圈的脉冲=(步进电机)一圈的脉冲 =细分数*每转脉冲*减速比。=(无刷伺服电机)一圈的脉冲 =
    发表于 07-07 07:18

    加性细胞自动机的同构性分析

    根据矩阵方程理论和细胞自动机原理,提出了加性细胞自动机状态转移结构的同构性方法,该方法利用状态转移矩阵方程及其特征多项式分析规则90和150加性细胞自动机,证明了特
    发表于 02-28 17:03 35次下载

    由跨导运放和普通运放共同构成的压控均衡器

    由跨导运放和普通运放共同构成的压控均衡器
    发表于 02-25 23:15 1402次阅读
    由跨导运放和普通运放共<b class='flag-5'>同构</b>成的压控均衡器

    同构和异构设计的再思考

    同构和异构设计的再思考 早在2001年,我曾写过一篇专栏文章,内容是关于在针对信号处理的应用中,采用异质结构设计所具备的优点。我的依据是:信号处理应用一般包
    发表于 10-09 08:09 3079次阅读

    前端同构MVC实践分析

    1、同构概念和意义 1.1、isomorphic 是什么? isomorphic,读作[ˌaɪsəmɔ:fɪk],意思是:同形的,同构的。 维基百科对它的描述是:同构是在数学对象之间
    发表于 09-30 13:07 0次下载

    基于导数序列的时间序列同构关系

    时间序列同构关系,经过数学推导给出了时间序列同构关系判定的法则,并基于此提出了同构关系时间序列片段发现的算法。该算法首先对原始时间序列进行预处理,然后分段拟合后对各时间序列分段进行同构
    发表于 12-12 15:52 0次下载
    基于导数序列的时间序列<b class='flag-5'>同构</b>关系

    计及无功潮流影响的传输介概念

    在潮流介的基础上,考虑了线路在传输无功潮流方面的作用,提出线路传输介并将其用于辨识电网关键线路。由于充足的无功支持是电压稳定性的基础,将无功传输的作用纳入到关键线路辨识方法中后,传输介能准确
    发表于 03-06 17:52 2次下载
    计及无功潮流影响的传输介<b class='flag-5'>数</b><b class='flag-5'>概念</b>

    FPGA产生基于LFSR的伪随机概念

    ”,在这补一篇《FPGA产生基于LFSR的伪随机》,欢迎大家交流学习。 1.概念 通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机
    的头像 发表于 04-02 16:33 2446次阅读
    FPGA产生基于LFSR的伪随机<b class='flag-5'>数</b><b class='flag-5'>概念</b>

    逻辑复制的概念与原理

    在数字化时代的今天,我们都认同数据会创造价值。为了最大化数据的价值,我们不停的建立着数据迁移的管道,从同构到异构,从关系型到非关系型,从云下到云上,从仓到数据湖,试图在各种场景挖掘数据的价值。而在这纵横交错的数据网络中,逻辑复制扮演着极其重要的角色。
    的头像 发表于 09-22 10:11 1785次阅读

    多核同构SMP--调度算法分析

    随着智能化产品的需求不断提高,慢慢的单芯片单核处理器已经不能满足我们的需求,于是就在一个芯片上集成两个或多个核心,进而转向了多核处理器的发展,多核处理器具有更高的计算密度和更强的并行处理能力,所以它也是大趋势。多核处理器从硬件的角度来区分,又分为同构和异构。
    的头像 发表于 07-10 11:10 2547次阅读
    多核<b class='flag-5'>同构</b>SMP--调度算法分析

    同步置,异步置,同步清零,异步清零的概念

    同步置、异步置、同步清零和异步清零是数字电路设计中常用的概念。 一、同步置 同步置是指在某一个特定的时钟脉冲上,将寄存器或者特定的电
    的头像 发表于 02-22 13:48 1.8w次阅读