factorization

    0熱度

    1回答

    因此,我正在嘗試使用BigInteger類創建Pollard的Rho因子分解算法,以支持非常大的整數。代碼主要工作,但無法找到4或8(應該是2)的因素。目前,我已經通過算法循環10,000,000次,仍然無法找到2作爲因素。 a隨機生成(限制在0到1000之間)。這只是Pollard Rho算法中的一個缺陷,還是在執行過程中出現錯誤? 的n被傳遞是4 初始a被計算爲在下面的代碼的隨機同樣的方式,0

    2熱度

    1回答

    我想查找範圍內的所有數字因子[1,10 ]。我知道它可以在O(sqrt(n))中解決。但在此之前必須運行Eratosthenes的篩選,通過跟蹤每個數字的主要因素之一,可以輕鬆修改該篩選以獲得一個數字的素數分解。所以我想知道使用它的素因子分解來生成所有因子會更有效率嗎? 設n = P 1 ķ * P ķ * .... * P米ķ米 我認爲這種表示法可以在篩分後得到O(m +Σk i)。 我想出了下

    7熱度

    2回答

    例如,考慮它可通過以下方式來編寫數96: 1. 96 2. 48 * 2 3. 24 * 2 * 2 4. 12 * 2 * 2 * 2 5. 6 * 2 * 2 * 2 * 2 6. 3 * 2 * 2 * 2 * 2 * 2 7. 4 * 3 * 2 * 2 * 2 8. 8 * 3 * 2 * 2 9. 6 * 4 * 2 * 2 10. 16 * 3 * 2 11. 4

    3熱度

    1回答

    的問題,我試圖解決: 給定一個int n,返回此int的最小的「分解」到裏面全是方形的數字。 我們在這裏定義因式分解的方式不是通常的方式:k到m數字(​​)的因式分解將如此:m1 + m2 + m3 + ... = k。 例如:讓n = 12。最佳解決方案是:[4,4,4],因爲4是2的平方和4 + 4 + 4 = 12。也有[9,1,1,1],雖然它不是最小的,因爲它是前者的4個數字而不是3個。

    0熱度

    2回答

    我最近在Python中製作了一段代碼,它將用戶輸入的數字「n」打印出該數字的主要因素,包括重複素數。我感到非常興奮,因爲我已經研究了一段時間,但實際上並沒有那麼好。任何大於500,000的n都需要很長的時間來計算因子,我想知道是否有任何方法來優化它。 import sys def is_prime(n): if n < 2: return False if n

    2熱度

    3回答

    我已將所有質數存儲在sieve之後的矢量primes範圍內。現在我想在短時間內找到n的所有主要因素。 我的代碼: i=0 while(primes[i]<=n) { if(n%primes[i]==0) { cout<<primes[i]<<endl; } while(n%primes[i]==0) n

    0熱度

    1回答

    我已經使用蒙哥馬利曲線(與Lenstra的橢圓曲線方法相同的想法,只是改變了一點,因此適用於蒙哥馬利曲線)對整數因子分解的橢圓曲線方法進行了編程。但是,我還沒有真正能夠找到任何使用該方法將數字因子化的例子,並且我真的很希望能夠對我知道應該給出結果的數字進行測試,以便檢查它是否可用應該。所以我的問題是,有沒有人有數字上使用的方法的例子,以便我可以看到我的代碼是否使用相同的數字提供相同的輸出?

    3熱度

    5回答

    我想讓這段代碼更快。它返回一個長整數的所有因素(素數)。如果longNumber是特定的,那麼顯然需要執行幾分鐘。 int div = 2; String factors = ""; while (longNumer != 1) { if (longNumer % div == 0) { longNumer /= div; factors +=

    38熱度

    10回答

    根據此post,我們可以通過以下代碼獲取數字的所有除數。 for (int i = 1; i <= num; ++i){ if (num % i == 0) cout << i << endl; } 例如,數24的除數是1 2 3 4 6 8 12 24。 在搜索了一些相關文章後,我沒有找到任何好的解決方案。有沒有什麼有效的方法來完成這個? 我的解決辦法: 通過這個so

    2熱度

    2回答

    主要是,它爲什麼如此之快(對於大數字)?該文件只告訴我如何使用它。例如,最多需要一秒才能找到1234567890987654的最大素數因子,對我而言,這看起來很瘋狂。 >>max(factor(1234567890987654)) ans = 69444443