fortran演算法
『壹』 fortran中階乘演算法
http://www.fcode.cn/algorithm-50-1.html
我也不太理解,我是問的大神,論壇那有專門的講解,你看看吧
『貳』 多個數字組合相加的和最接近或等於某個數的演算法
只能遞歸枚舉所有組合進行試算,找到最接近的組合。
不懂Python。需要的話,可以寫一個fortran的。
2021-06-05 補充
寫了一個fortran程序,具體演算法見注釋(綠色字體)
附:運行結果和代碼
『叄』 SM3 雜湊演算法輕量化 Fortran 介面庫:SM3-Fortran
在學習哈希演算法的探索中,我偶然接觸到了國標雜湊演算法SM3。為了深入了解,我嘗試用Fortran實現其介面庫。開始時,我查看了國家密碼管理局提供的演算法實現,盡管我並非數學專家,但試圖理解背後的數學理論。理論表明,SM3演算法主要過程是將輸入的二進制數據轉換為512比特的整數倍,不足部分進行特殊處理並補足。數據被分組,每512比特一組,通過初始值進行有損迭代壓縮,使用大量位運算,最終結果為256比特的雜湊值。
在實踐階段,我發現Fortran中具備完整的位運算函數,於是興沖沖地開始了代碼編寫。然而,在實現演算法的中間部分,我遇到了無法得到預期結果的問題。經過一番搜索,我意識到Fortran使用有符號整型作為容器,無法達到與無符號整型相同的效果,無論我嘗試何種類型重塑。這讓我意識到,對於某些對內存存儲要求嚴格的雜湊演算法,Fortran不支持無符號整型,因此,用演算法和C語言實現幾乎無法在Fortran中復現。
盡管遇到了挑戰,這次經歷也帶來了收獲。我加深了對transfer函數的理解,並在類型重塑方面提高了熟練度。Fortran缺少無符號整型,但C binding卻提供了解決方案。我藉助廣受好評的GmSSL庫中的C語言代碼,僅引入了SM3演算法,創建了Fortran介面庫SM3-Fortran。庫雖然只包含一個SM3雜湊介面,但前後投入了整個周末的時間,提供了一個不錯的示例。
在庫的README中,我詳細記錄了引入GmSSL代碼的原因。基於興趣學習雜湊演算法後,我發現Fortran在實現哈希演算法時存在局限,特別是與無符號整型相關的部分。盡管如此,GmSSL以其較高的代碼質量受到歡迎,因此選擇引入其代碼作為依賴。引入SM3-Fortran庫具有以下意義:SM3作為國家標準的雜湊演算法,GmSSL為國人主導的項目,體現了國人情懷;其安全性與SHA-256相當;SM3-Fortran作為輕量化介麵包,相較於Fortran-Stdlib/Hash,體積更小;僅引入SM3演算法,為其他演算法的Fortran綁定提供了實踐參考。
使用GmSSL已有實現大大節省了工作量(在此對GmSSL表示感謝!)。庫支持fpm包分發和構建,但我認為這可能僅是「上灰」處理。Fortran缺少無符號整型確實限制了在圖像處理和雜湊演算法方面的應用,但這可以通過增加無符號整型的C介面規范的復雜度來解決。即使沒有,現有的C介面規范也足以應對。如今,fpm較好地支持了C、Fortran的編譯,這為我提供了便利。
『肆』 fortran編程。求教求余函數的演算法。我認為 MOD(1,5)=0,但結果為1.請指教。
同學,你的演算法沒有錯誤!
求余運算中,mod(1,5)是等於1的,因為1/5=0…1
所以余數是1,希望你能夠採納!謝謝!