亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何找到與前 20 個數字相除的第一個數字?

如何找到與前 20 個數字相除的第一個數字?

弒天下 2022-09-07 16:55:13
我想找到可以在沒有提醒的情況下除以前20個數字(1,2,3...20)的最小數字(我嘗試過一些我認為不會失敗的東西,就像這樣:for (int i = 20; i < Integer.MAX_VALUE; i++) {    int seImparte = 0;    for (int j = 1; j <= 20; j++) {        if (i % j != 0) {            seImparte++;        }    }    if (seImparte == 0) {        System.out.println(i);        break;    }}我以為我會得到第一個數字,然后程序會退出,但它運行并且沒有任何反應。感謝您的時間和幫助!
查看完整描述

3 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

您可以在無效條件

之后中斷內部循環,也可以從3或7開始,因為[1,2,3,4,5,6可以通過[4,6,8,10,12]進行測試 -

這是可選的,但中斷很重要


     for (int i = 20; i < Integer.MAX_VALUE; i++) {

      int seImparte = 0;

        for (int j = 7; j <= 20; j++) {

            if (i % j != 0) {

                seImparte++; break;

            }

        }

        if (seImparte == 0) {

            System.out.println(i);

            break;

        }

    }

輸出: 232792560


查看完整回答
反對 回復 2022-09-07
?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

與其優化暴力破解方法,不如使用簡單的數學規則。


由此產生的復雜性與“大量”相對應O(n*log(n))


Python 代碼使用最小公用多重函數


def gcd(a, b):

    while b > 0:

        a, b = b, a % b

    return a


def lcm(a, b):

    return a * b // gcd(a, b)     # integer division



d = 1

for i in range(2, 21): #last i=20

    d = lcm(d, i)


print(d)


>>[Dbg]>>> 232792560

此外,我們可以將范圍內的所有數字分解為素數,并記住每個素數的最大冪。在這種情況下:并乘以這些冪。更復雜的代碼(但這種方式有時可能很有用)2:4; 3:2; 5:1; 7:1; 11:1; 13:1; 17:1; 19:1


232792560 = 16 * 9 * 5 * 7 * 11 * 13 * 17 * 19


查看完整回答
反對 回復 2022-09-07
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

希望這是你正在尋找的:


for (int i = 2; i < Integer.MAX_VALUE; i++) {

        for (int j = 2; j <= 20; j++) {

            if (i % j == 0) {

                System.out.println("i : "+i+" j : "+j);

                break;

            }

        }

    }


查看完整回答
反對 回復 2022-09-07
  • 3 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號