请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9446|回复: 15

[源代码] 使用Fortran语言计算取鸡蛋问题

[复制链接]

新浪微博达人勋

发表于 2017-6-13 11:04:29 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
现在利用Fortran语言计算一道网络上常见的有意思的小题目,首先回顾一下题目:一篮子鸡蛋,22个拿剩1个,33个拿,77个拿和99个拿都能拿完,44个拿,55个和88个拿也剩1个,66个拿剩3个,求篮子里至少有多少枚鸡蛋?
(1)在写代码前,可以先思考一下题目,既然77个拿和99个拿都能拿完,说明篮子里鸡蛋至少有63枚,所以在下面的代码中就以63为计算起点,并且把篮子中鸡蛋数量的上限设为1000枚,具体代码如下。
         programcalculate eggs
         integerisum
         n=1000
         doisum=63,n
         i2=int(isum/2)
         i3=int(isum/3)
         i4=int(isum/4)
         i5=int(isum/5)
         i6=int(isum/6)
         i7=int(isum/7)
         i8=int(isum/8)
         i9=int(isum/9)
         if(2*i2+1.eq.isum .and. 3*i3.eq.isum .and.
    &   4*i4+1.eq.isum .and. 5*i5+1.eq.isum .and.
   &   6*i6+3.eq.isum .and.7*i7.eq.isum .and.
    &   8*i8+1.eq.isum .and. 9*i9.eq.isum)then
         write(*,*)'eggs=',isum
         endif
         enddo
         end
1.jpg
(2)执行这个程序,计算结果就出来了,eggs=441枚。
2.jpg
(3)如果把鸡蛋数量的上限设为了10000会是什么结果?即将n改为n=10000,然后重新编译(Compile)、建立(Build)和执行(Execute)这个程序脚本,此时结果为eggs=441296154818001。也就是如果不设置篮子中鸡蛋数量的上限,该题目有无数个解。然后,fortunately,该题目问得是“求篮子里至少有多少枚鸡蛋”?所以篮子中至少有441枚鸡蛋。
3.jpg
(4)也可以把计算结果写到text文档中,只需添加open语句打开文件和write语句写入文件,同时增加format语句说明写入格式(见下图红框标注的代码),然后编译(Compile)、建立(Build)和执行(Execute)改进的程序,此时eggs工程目录下多了名为egg.txt的文本文档,打开该文本文档,便可找到输出的计算结果。eggs=441是本题所要的正确答案,即篮子中至少有441枚鸡蛋。
4.jpg
5.jpg


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-13 12:31:03 | 显示全部楼层
本帖最后由 weinihou 于 2017-6-13 12:33 编辑

给楼主分步递进且附图点个赞~

谢谢楼主分享~~~~~~



但如果我写的话,应该会直接用MOD函数取余吧
而且为避免手残敲错变量名,我肯定也会 implicit none 然后老老实实声明变量的
由于MOD函数(function)能直接返回值,中间我也不会存那么多i2 i3之类的,直接在if句中判断
然后既然都知道7和9能整除,方便起见,直接63*i,给i从1到某个值做循环,偷偷懒~


然后!
楼主竟然用老语法!!
只有部分有缩进!!!
是要逼死强迫症么



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-13 14:21:53 | 显示全部楼层
目测这个程序有只一行的版本~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-6-13 16:15:01 | 显示全部楼层
ljchen1989 发表于 2017-6-13 14:21
目测这个程序有只一行的版本~

请分享一行的版本供学习,谢谢。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-6-13 16:15:32 | 显示全部楼层
weinihou 发表于 2017-6-13 12:31
给楼主分步递进且附图点个赞~

谢谢楼主分享~~~~~~

谢谢指导。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-13 17:05:55 | 显示全部楼层

没有没有,只是吐槽的老毛病犯了,人一烦就喜欢瞎胡说,好纠人毛病,“好为人师”。这是病,我也得多调调
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-6-13 17:44:37 | 显示全部楼层
weinihou 发表于 2017-6-13 17:05
没有没有,只是吐槽的老毛病犯了,人一烦就喜欢瞎胡说,好纠人毛病,“好为人师”。这是病,我也得多调调 ...

不,不,你是难得的朋友,刚加你好友啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-13 19:26:04 | 显示全部楼层
jin_defence 发表于 2017-6-13 17:44
不,不,你是难得的朋友,刚加你好友啦

{:5_260:}{:5_260:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-16 16:13:39 | 显示全部楼层
嗯,挺好的。思路清晰,值得学习!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-6-16 16:14:06 | 显示全部楼层
weinihou 发表于 2017-6-13 12:31
给楼主分步递进且附图点个赞~

谢谢楼主分享~~~~~~

赶快上一个不同的版本,让大家学习下
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表