fortran fortran中文资料网
手气不错
Article

018.integerDivision_整数除法

fortran中若a和bb都是integer,表达式a/ba/b执行整数除法。它的含义是:寻找一个整数商q,使a可以分解为a=bq+ra=bq+r,其中r是余数。整数取模mod(a,b)返回这个余数r。例如7/27/2中,7=23+17=2*3+1,所以整数商为3,mod(7,2)mod(7,2)为1。因此整数除法和取模常成对理解:一个计算商,一个计算余数。

本文代码


program integerDivisionDemo
  implicit none
  integer :: dividend=7 ! 被除数
  integer :: divisor ! 除数
  integer :: quotient ! 商
  integer :: remainder ! 余数
  dividend=7
  divisor=2
  quotient=dividend/divisor
  remainder=mod(dividend,divisor)
  print "(A)","整数除法:"
  print "(A,I4)","被除数=",dividend
  print "(A,I4)","除数=",divisor
  print "(A,I4)","整数除法7/2的商=",quotient
  print "(A,I4)","整数取模mod(7,2)的余数=",remainder
end program integerDivisionDemo

编译运行

(base) hong@hongdeMacBook-Pro tmp.integerDivision % gfortran exampleIntegerDivision.f90
(base) hong@hongdeMacBook-Pro tmp.integerDivision % ./a.out                            
整数除法:
被除数=   7
除数=   2
整数除法7/2的商=   3
整数取模mod(7,2)的余数=   1
(base) hong@hongdeMacBook-Pro tmp.integerDivision % 

核心代码

  quotient=dividend/divisor
  remainder=mod(dividend,divisor)

结果分析

  • quotient=dividend/divisor将7/2的值赋给quotient,quotient根据整数除法商3
  • remainder=mod(dividend,divisor)将mod(7,2的值赋给remainder,remainder根据模运算余1

知识点总结

mod()的正式学名:fortran取模函数,采用函数调用形式mod(a,b)。fortran计算中大量使用函数,常见的还有log(),sqrt(),exp(),sin()等。fortran可模除,但没有直接的模除运算符,有些读者接触过如c语言使用%作为模除运算符

remainder = dividend % divisor

整数除法与实数除法的差异就在“谜面”上,即类型不同。若计算7.0/27.0/27/2.07/2.07.0/2.07.0/2.0可得3.5000。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注