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,希望你能够采纳!谢谢!