算法-經典趣題-愛因斯坦階梯問題


一、問題

愛因斯坦曾經提出過這樣一道有趣的數學題:

有一個長階梯,

若每步上2階,最后剩下1階;

若每步上3階,最后剩2階;

若每步上5階,最后剩下4階;

若每步上6階,最后剩5階;

只有每步上7階,最后剛好一階也不剩。

請問該階梯至少有多少階。

二、分析

來分析一下愛因斯坦的階梯問題。假設階梯的個數為minNumber,按照前述的條件,minNumber應該滿足如下條件:

minNumber除以2的余數為1;

minNumber除以3的余數為2;

minNumber除以5的余數為4;

minNumber除以6的余數為5;

minNumber除以7的余數為0;

很明顯這個數是7的倍數,所以,從7開始,對每個7的倍數進行判斷,直到尋找到一個最小的滿足條件的數據為止。

三、編程

package com.joshua317;

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int minNumber;
        System.out.println("愛因斯階梯問題");
        Jieti jieti = new Jieti();
        minNumber = jieti.getMinNum();
        System.out.printf("這個階梯至少有%d階",minNumber);

    }
}

class Jieti {
    public int getMinNum() {
        int minNumber = 7;
        while (true) {
            if (minNumber%2==1 && minNumber%3==2 && minNumber%5==4 && minNumber%6==5) {
                break;
            }
            minNumber = minNumber+7;
        }
        return minNumber;
    }
}
 
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM