0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

同構(gòu)數(shù)的概念

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-07 16:21 ? 次閱讀

今天看到一個(gè)比較有意思的概念,叫做同構(gòu)數(shù)。同構(gòu)數(shù)是一個(gè)數(shù)字,它的平方數(shù)與數(shù)字本身的尾數(shù)相同。

例如,25是一個(gè)同構(gòu)數(shù),因?yàn)?5的平方是625,它的結(jié)尾是25。同樣地,76是一個(gè)同構(gòu)數(shù),因?yàn)?6的平方是5776,同樣以76結(jié)尾。

判斷一個(gè)數(shù)是否是同構(gòu)數(shù)

有許多算法可以用來確定一個(gè)數(shù)字是否是同構(gòu),接下來我們選幾種來看看。

在數(shù)字上循環(huán)并進(jìn)行比較

驗(yàn)證一個(gè)數(shù)字是否同構(gòu)大概有以下幾個(gè)步驟:

  1. 計(jì)算數(shù)字平方數(shù)
  2. 獲取平方數(shù)的最后一位數(shù)字并與數(shù)字的最后一位數(shù)字進(jìn)行比較 如果最后一位數(shù)字不相等,則該數(shù)字不是一個(gè)同構(gòu)數(shù) 如果最后一位數(shù)字相等,則進(jìn)入下一步
  3. 刪除數(shù)字和平方的最后一位數(shù)字
  4. 重復(fù)步驟2/3,直到數(shù)字的所有數(shù)字都得到比較

上述方法以相反的方式對(duì)輸入數(shù)字的數(shù)字進(jìn)行循環(huán)。

我們現(xiàn)在寫一個(gè)Java程序來實(shí)現(xiàn), isAutomorphicUsingLoop()方法將一個(gè)整數(shù)作為輸入,并檢查它是否是同構(gòu)數(shù)。

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;
}

在任何一個(gè)步驟,如果最后一位數(shù)字不相等,我們就返回false 。否則,我們就去掉最后一個(gè)數(shù)字,對(duì)number的剩余數(shù)字重復(fù)這個(gè)過程。

我們可以通過以下的代碼來驗(yàn)證這個(gè)方法是否可行。

測(cè)試用例:

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

直接比較數(shù)字

當(dāng)然我們還可以用更直接的方法來確定一個(gè)數(shù)字是否是同構(gòu)數(shù)。

  1. 得到數(shù)字并計(jì)算數(shù)字的位數(shù)n
  2. 計(jì)算數(shù)字的平方數(shù)
  3. 從平方數(shù)中得到最后的n個(gè)數(shù)字,如果平方數(shù)中的最后n個(gè)數(shù)字與原始數(shù)字相同,則該數(shù)字是同構(gòu)的,否則就不是同構(gòu)數(shù)

在這種情況下,我們不需要對(duì)數(shù)字的位數(shù)進(jìn)行循環(huán)。我們可以直接使用Math庫來完成數(shù)字的長度以及平方數(shù)的最后幾位的計(jì)算。

代碼示例:

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;
}

與第一種方法類似,我們先計(jì)算number的平方?,F(xiàn)在我們不是逐一比較numbersquare的最后一位數(shù)字,而是通過使用 Math.floor() 一次性得到 number 的總的 numberOfDigits 。然后通過使用 Math.pow()square提取盡可能多的數(shù)字。最后,我們將輸入的number與提取的數(shù)字lastDigits進(jìn)行比較。

如果numberlastDigits相等,這個(gè)數(shù)字就是同構(gòu)的,我們返回 true ,否則,我們返回 false 。

測(cè)試用例:

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

總結(jié)

在這篇文章中,我們了解了什么是同構(gòu)數(shù),還學(xué)習(xí)了幾種確定一個(gè)數(shù)是否為同構(gòu)數(shù)的方法,以及相應(yīng)的Java程序。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)字
    +關(guān)注

    關(guān)注

    1

    文章

    1693

    瀏覽量

    51311
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68625
  • java程序
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    7575
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Iceberg概念格疊置半集成的全局閉頻繁項(xiàng)集挖掘算法

    成構(gòu)造全局Iceberg概念格的可行性,進(jìn)而提出一個(gè)基于Iceberg概念格疊置半集成的頻繁概念生長分布算法(Frecogd),并且把它應(yīng)用于同構(gòu)分布式環(huán)境下的全局閉頻繁項(xiàng)集挖掘過程中
    發(fā)表于 04-24 10:02

    labview尋找同構(gòu)數(shù),你準(zhǔn)備好了嗎?

    本帖最后由 zhihuizhou 于 2011-12-15 17:13 編輯 同構(gòu)數(shù) 是會(huì)出現(xiàn)在它的平方的右邊的數(shù) , 例如 5*5=25 (5在25的右邊) , 6×6=36 (6在36
    發(fā)表于 12-13 15:48

    labview同構(gòu)數(shù)最快和最小VI程序展示

    本帖最后由 zhihuizhou 于 2011-12-15 17:21 編輯 同構(gòu)數(shù)題目要求:https://bbs.elecfans.com
    發(fā)表于 12-15 17:11

    步進(jìn)電機(jī)相關(guān)參數(shù)的概念是什么?

    一、步進(jìn)電機(jī)相關(guān)概念 步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù)。 角位移:角位移就是步進(jìn)電機(jī)的轉(zhuǎn)軸轉(zhuǎn)動(dòng)行駛的位移。1.步進(jìn)電機(jī)的相、線、極性...
    發(fā)表于 07-07 08:03

    介紹步進(jìn)電機(jī)使用的幾個(gè)概念

    1.步進(jìn)電機(jī)使用的幾個(gè)概念:電機(jī)轉(zhuǎn)動(dòng)一圈的脈沖數(shù)=(步進(jìn)電機(jī))一圈的脈沖數(shù) =細(xì)分?jǐn)?shù)*每轉(zhuǎn)脈沖數(shù)*減速比。=(無刷伺服電機(jī))一圈的脈沖數(shù) =
    發(fā)表于 07-07 07:18

    加性細(xì)胞自動(dòng)機(jī)的同構(gòu)性分析

    根據(jù)矩陣方程理論和細(xì)胞自動(dòng)機(jī)原理,提出了加性細(xì)胞自動(dòng)機(jī)狀態(tài)轉(zhuǎn)移結(jié)構(gòu)的同構(gòu)性方法,該方法利用狀態(tài)轉(zhuǎn)移矩陣方程及其特征多項(xiàng)式分析規(guī)則90和150加性細(xì)胞自動(dòng)機(jī),證明了特
    發(fā)表于 02-28 17:03 ?35次下載

    由跨導(dǎo)運(yùn)放和普通運(yùn)放共同構(gòu)成的壓控均衡器

    由跨導(dǎo)運(yùn)放和普通運(yùn)放共同構(gòu)成的壓控均衡器
    發(fā)表于 02-25 23:15 ?1387次閱讀
    由跨導(dǎo)運(yùn)放和普通運(yùn)放共<b class='flag-5'>同構(gòu)</b>成的壓控均衡器

    對(duì)同構(gòu)和異構(gòu)設(shè)計(jì)的再思考

    對(duì)同構(gòu)和異構(gòu)設(shè)計(jì)的再思考 早在2001年,我曾寫過一篇專欄文章,內(nèi)容是關(guān)于在針對(duì)信號(hào)處理的應(yīng)用中,采用異質(zhì)結(jié)構(gòu)設(shè)計(jì)所具備的優(yōu)點(diǎn)。我的依據(jù)是:信號(hào)處理應(yīng)用一般包
    發(fā)表于 10-09 08:09 ?3065次閱讀

    前端同構(gòu)MVC實(shí)踐分析

    1、同構(gòu)概念和意義 1.1、isomorphic 是什么? isomorphic,讀作[?a?s?m?:f?k],意思是:同形的,同構(gòu)的。 維基百科對(duì)它的描述是:同構(gòu)是在數(shù)學(xué)對(duì)象之間
    發(fā)表于 09-30 13:07 ?0次下載

    基于導(dǎo)數(shù)序列的時(shí)間序列同構(gòu)關(guān)系

    時(shí)間序列同構(gòu)關(guān)系,經(jīng)過數(shù)學(xué)推導(dǎo)給出了時(shí)間序列同構(gòu)關(guān)系判定的法則,并基于此提出了同構(gòu)關(guān)系時(shí)間序列片段發(fā)現(xiàn)的算法。該算法首先對(duì)原始時(shí)間序列進(jìn)行預(yù)處理,然后分段擬合后對(duì)各時(shí)間序列分段進(jìn)行同構(gòu)
    發(fā)表于 12-12 15:52 ?0次下載
    基于導(dǎo)數(shù)序列的時(shí)間序列<b class='flag-5'>同構(gòu)</b>關(guān)系

    計(jì)及無功潮流影響的傳輸介數(shù)概念

    在潮流介數(shù)的基礎(chǔ)上,考慮了線路在傳輸無功潮流方面的作用,提出線路傳輸介數(shù)并將其用于辨識(shí)電網(wǎng)關(guān)鍵線路。由于充足的無功支持是電壓穩(wěn)定性的基礎(chǔ),將無功傳輸?shù)淖饔眉{入到關(guān)鍵線路辨識(shí)方法中后,傳輸介數(shù)能準(zhǔn)確
    發(fā)表于 03-06 17:52 ?2次下載
    計(jì)及無功潮流影響的傳輸介<b class='flag-5'>數(shù)</b><b class='flag-5'>概念</b>

    FPGA產(chǎn)生基于LFSR的偽隨機(jī)數(shù)概念

    ”,在這補(bǔ)一篇《FPGA產(chǎn)生基于LFSR的偽隨機(jī)數(shù)》,歡迎大家交流學(xué)習(xí)。 1.概念 通過一定的算法對(duì)事先選定的隨機(jī)種子(seed)做一定的運(yùn)算可以得到一組人工生成的周期序列,在這組序列中以相同的概率選取其中一個(gè)數(shù)字,該數(shù)字稱作偽隨機(jī)數(shù)
    的頭像 發(fā)表于 04-02 16:33 ?2417次閱讀
    FPGA產(chǎn)生基于LFSR的偽隨機(jī)<b class='flag-5'>數(shù)</b><b class='flag-5'>概念</b>

    邏輯復(fù)制的概念與原理

    在數(shù)字化時(shí)代的今天,我們都認(rèn)同數(shù)據(jù)會(huì)創(chuàng)造價(jià)值。為了最大化數(shù)據(jù)的價(jià)值,我們不停的建立著數(shù)據(jù)遷移的管道,從同構(gòu)到異構(gòu),從關(guān)系型到非關(guān)系型,從云下到云上,從數(shù)倉到數(shù)據(jù)湖,試圖在各種場(chǎng)景挖掘數(shù)據(jù)的價(jià)值。而在這縱橫交錯(cuò)的數(shù)據(jù)網(wǎng)絡(luò)中,邏輯復(fù)制扮演著極其重要的角色。
    的頭像 發(fā)表于 09-22 10:11 ?1708次閱讀

    多核同構(gòu)SMP--調(diào)度算法分析

    隨著智能化產(chǎn)品的需求不斷提高,慢慢的單芯片單核處理器已經(jīng)不能滿足我們的需求,于是就在一個(gè)芯片上集成兩個(gè)或多個(gè)核心,進(jìn)而轉(zhuǎn)向了多核處理器的發(fā)展,多核處理器具有更高的計(jì)算密度和更強(qiáng)的并行處理能力,所以它也是大趨勢(shì)。多核處理器從硬件的角度來區(qū)分,又分為同構(gòu)和異構(gòu)。
    的頭像 發(fā)表于 07-10 11:10 ?2433次閱讀
    多核<b class='flag-5'>同構(gòu)</b>SMP--調(diào)度算法分析

    同步置數(shù),異步置數(shù),同步清零,異步清零的概念

    同步置數(shù)、異步置數(shù)、同步清零和異步清零是數(shù)字電路設(shè)計(jì)中常用的概念。 一、同步置數(shù) 同步置數(shù)是指在某一個(gè)特定的時(shí)鐘脈沖上,將寄存器或者特定的電
    的頭像 發(fā)表于 02-22 13:48 ?1.7w次閱讀