本帖最后由 watermelon 于 2020-8-3 10:53 编辑
昨天群里面有同学讨论求余数的计算问题,Fortran中有专门的求余数函数mod和modulo,其中,两个函数说明如下:(参考资料《Fortran95程序设计》 彭国伦 著)
MOD(a, b)
a, b = INTEGER / REAL
return = INTEGER / REAL
功能:计算a/b余数。当参数为浮点数时,返回(a-int(a/b)*b)的值
MODULO(a, b)
a, b = INTEGER / REAL
RETURN = INTEGER / REAL
功能:同样计算a/b的余数,使用和MOD不同的公式来计算。当参数为整数时,返回a-FLOOR(REAL(a)/REAL(b))*b, 参数为浮点数时,返回a - FLOOR(a/b)*b
之前max同学在群里发送过一个图片,显示了Fortran求余过程中的计算方法,如下图所示:
QQ图片20200803100540.png (5.32 KB, 下载次数: 7)
2020-8-3 10:43 上传
对于mod函数的计算方法,是非常的清晰明了了。
接下来看看Fortran和Python以及C语言中的取余数过程:
实验平台:win10 x64, Intel Visual Fortran2013学生版, Visual Studio 2013 Community, Python3.8(CPython)
Fortran实验代码:
program main
implicit none
write(*, *) mod(139, 10) ! 139 - 10*(int(139 // 10)) => 139 - 10*int(13.9) => 139 - 130 = 9
write(*, *) mod(139, -10) ! 139 - (-10)*(int(139 // -10) => 139 + 10*int(-13.9) => 139 + (-130) = 9
write(*, *) mod(-139, 10) ! -139 - 10*(int(-139 // 10)) => -139 - 10*int(-13.9) => -139 + 130 = -9
write(*, *) mod(-139, -10) ! -139 - (-10)*(int(-139 // -10)) => -139 - (-10)*(int(13.9)) => -139 + 130 = -9
end program
运行结果:
请按任意键继续. . .
依据代码的计算过程,我们可以看出,Fortran在取余的计算过程中使用int()进行取整数时,实现的是正数负数均向0取整的计算方法。
接下来我们继续看一下python3.8中对于取余数的计算方法:
Python实验代码:
[Python] 纯文本查看 复制代码print(139 % 10) # 139 - 10*(int(139 // 10)) => 139 - 10*int(13.9) => 139 - 130 = 9
print(139 % -10) # 139 - (-10)*(int(139 // -10) => 139 + 10*int(-13.9) => 139 + (-140) = -1
print(-139 % 10) # -139 - 10*(int(-139 // 10)) => -139 - 10*int(-13.9) => -139 + 140 = 1
print(-139 % -10) # -139 - (-10)*(int(-139 // -10)) => -139 - (-10)*(int(13.9)) => -139 + 130 = -9
运行结果:
[Python] 纯文本查看 复制代码Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
================ RESTART: C:/Users/Administrator/Desktop/fuck.py ===============
依据代码的计算过程,我们可以看出,Python在取余的计算过程中使用int()进行取整数时,计算方法为:向下取整;即正数向0取整,负数向负无穷取整。
C语言代码与Fortran代码计算结果相同
实验程序如下所示:
[C] 纯文本查看 复制代码#include
int main(int argc, char *argv[])
printf("%d\n", 139 % 10);
printf("%d\n", 139 % -10);
printf("%d\n", -139 % 10);
printf("%d\n", -139 % -10);
return 0;
运行结果:
[C] 纯文本查看 复制代码9
请按任意键继续. . .
所以C语言在求余数的方法上与Fortran是相同的。
需要注意的地方是:Fortran中使用int( ),C语言中使用(int)( ),Python中使用int( )对正数与负数取整时,均采用的是向0取整;很明显Python在取余过程中,其计算方法在负数方面发生了改变,成为了向负无穷取整。
希望大家多多批评指正!
行的定义。在自由格式中每行可以书写132个字符。程序语句的位置没有了只能从第7列后开始书写的固定约定,可以在任意一列开始书写。同一行中可以顺序书写多条程序语句,语句之间用分号“;”进行分隔。
•注释行的定义。在自由格式中,惊叹号“!”后的字符均被视为注释。但是,字符串中的“!”出外,如“PRINT *, ‘Hello!
Fortran
90/95’”中,“
Fortran
90/95’”不会被认为
符号
约定:
l I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。
l s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。
l […]表示可选参数。
l *表示常用函数。
在子例程中,主程序通过带有参数列表的调用来实现与不同子例程的数据交换。
除了参数列表,在
Fortran
中还可以通过 模块MODULE 来交换数据。
模块是一个独立编译的程序单元,它包含了在程序单元间共享的数据的类型定义和初始值。
Fortran
模块(MODULE)
1) 使用方式
常规用途是...
【简答题】编写程序,用户输入一个 列表 ,输出 列表元素之和 。例如用户输入 [ 1 , 2 , 3 , 4 ] ,则程序输出1 0 。( 注意:至少给出三种方法 ) ,提示可以考虑用 sum、 eval 、 reduce 函数及 for 循环【判断题】二层ACL可以匹配源MAC,目的MAC,源IP,目的IP等信息。【多选题】以下关于ICMP报文的分析正确的是()。 (多选)【填空题】假设有一个列...
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解。话题:
fortran
编程。求教求余函数的算法。我认为问题详情:program mainimplicit none integer a,b,c a=1 b=5 c=mod(a,b) w回答:同学,你的算法没有错误!求余
运算
中,mod(1,5)是等于1的,因为1/5=0…1所以
余数
是1,希望你能够采纳!谢谢!话题:使用
fortran
语言编程,...
python
中两数相除
取
余数
怎么
运算
,
余数
,整数,函数,被除数,
符号
python
中两数相除
取
余数
怎么
运算
易采站长站,站长之家为您整理了
python
中两数相除
取
余数
怎么
运算
的相关内容。在
Python
中
取
余数
可以通过
取
模
运算
符%或通过divmod()函数来
计算
。1、
取
模
运算
符%:所谓
取
模
运算
,就是
计算
两个数相除之后的
余数
,
符号
是%。如a % b就是
计算
a除以b的
余数
。用数学语言来描述,就是如果存在整数...
取
余的公式:
余数
=除数-被除数*商
python
的的
余数
是按照整除(向下
取
整)得到的商来
计算
的。
取
余问题主要分为 :正数与正数,负数与负数,正数与负数 ,0正数与正数#大数/小数:因为得出的商和整除得出的一致,所以直接按照这个公式(
余数
=除数-被除数*商)即可。print(9//7) #1print(9%7) #2#小数/大数:因为得出的商和整除得出的一致,所以直接按照这个公式(
余数
=除数-被除数...
python
如何实现
取
余操作的方法发布时间:2020-08-17 09:36:53来源:亿速云阅读:68作者:小新这篇文章主要介绍
python
如何实现
取
余操作的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
python
实现
取
余操作的方法:可以利用求模
运算
符(%)来实现。求模
运算
符可以将两个数相除得到其
余数
。我们还可以使用divmod()函数来实现
取
余操作,具体方法如:【...
我的并行
计算
之路
Fortran
语言1、学习
Fortran
语言语法2、求两个数的最大值3、对任意自然数n,设计一个求n的各位数字的立方和的函数子程序F(n)(如F(121)=13+23+13=1+8+1=10),并调用F(n)求1000以内的所有水仙花数(当一个数各个数位的立方和等于这个数本身时,称这样的数为水仙花数)4、二维数组
运算
,包括加、减、乘、乘逆
Fortran
语言
1、学习
Fortran
语言语法