回答
什麼是錯的直接的方式:
int mod_order(int m, int a) {
for(int n = 1, an = a; n != m; n++, an = an * a % m) if(an % m == 1) return n;
return -1;
}
我試過蠻力。 2
@ user1640967運行速度太慢了嗎?如果是這樣,那麼「多少」,蠻力需要多長時間,以及你期望它需要多長時間? – SheetJS
我想知道是否有更好的數學解決方案來解決上述問題 – rohangulati
正如你所看到的,計算ф(m)基本上與m的因式分解相同。這可以在sqrt(m)或更快的時間內完成,具體取決於您使用的算法的複雜程度。簡單之一:
int phi(m){
if(m==1) return 1;
for(int d=2; d*d<m; ++d){
if(m%d != 0) continue;
int deg = 1; long acc=1;
for(; m%(acc*d)==0; ++deg) acc*=d;
acc /= d;
return phi(m/acc)*acc*(d-1)/d;
}
return m-1;
}
更新:我的壞。 a = 1,n = 1,沒有什麼差別;對於a = 14,m = 15,n = 1, 2)。 n是ф(m)的除數,但有效地計算最少可能n似乎是棘手的。任務可以通過使用this定理(最小n是各個餘數的所有度數的最小公倍數)來劃分。但是,當m是素數或具有足夠大的素數除數,並且只有一個a(而不是用相同的m計算n對許多不同的a)時,我們沒有選擇。你可能想看看1,2。
- 1. 2^n mod(m)算法
- 2. 計算n! mod m當m不是素數時
- 3. 如何計算^^ b mod m?
- 4. 如何計算總和(1 + a%m + a^2%m ...... + a^n%m)
- 5. 計算2^n Mod m的最快方法,其中n和m是隨機整數
- 6. 計算DP [n] [m]更快
- 7. 我該如何計算Σ_{i = m}^n(m + i)^ n?
- 8. n = 1 mod 4,(n-1)/ 2-regular?
- 9. 爲什麼1從模中減去其中計算MOD = 1000000007
- 10. 當m是質數時如何計算nPr mod m?
- 11. 第N個四面體數mod m?
- 12. 我如何計算bigmod(bigmod(a^n)-bigmod(b^m))?
- 13. 如何在c = m^e(mod n)中找到m如果c,e,n已知
- 14. 計算總和1+(1/2!)+ ... +(1/N!)
- 15. 使用Java來計算11^-1 mod 26
- 16. M的計算在LCM N個整數
- 17. 如何計算^(1/n)?
- 18. C++(for)loop:計算y = n /(n + 1)!
- 19. 什麼是語言{0^m 1^m 2^n | n> = 0,m> n}
- 20. 彙編程序(TASM)計算提升m到n的功率(m^n)
- 21. Matlab函數(0:N-1)/ N * M
- 22. 計算2^n爲大N
- 23. 找到這個二元遞推方程的公式? f(m,n)= f(m-1,n)+ f(m,n-1)
- 24. 最快的算法來計算(a ^(2^N))%m?
- 25. 計算M個N事件中將出現的概率
- 26. 如何從1 x n cellarrays等m x 1 cellarray做一個m x n cellarray?
- 27. 證明所以(0 < m) ->(N ** M = S n中)
- 28. Java Swing:n x m GridLayout,例如[n-1,m-1] =綠色
- 29. 算法複雜N *(M + N)^ 2
- 30. 在Python中計算長度爲M的第N個序列
此網站是編程問題,而不是數學作業。 –
我需要使用代碼來計算這個值。我試圖蠻橫的力量,但它沒有在一個給定的時間限制內工作 – rohangulati
如果這是一個關於「CPU最快」的方式來做這個問題,只要CPU時間到了,這個問題可能屬於這裏,但是,看起來不太合適。 – BlackVegetable