C语言程序设计CAP-第5章编程题-素数和

文章目录

即将上大学了,准备上一些先修课,翁恺老师的课感觉非常不错,我是一个初学者,有啥错误大佬们别打我。

依照学术诚信条款,我保证此作业是本人独立完成的,未完成该项作业的同学请完成后再来。

此编程题的题目如下

/*简单分析一下*/胡乱分析一下

看到这题目我内心是拒绝的,因为不知道如何入手,题目中的n,m含义特殊,之间的素数也难以判断,我认为得整个素数表出来(大佬勿喷),可确实难以下手。好在我是学到第七章再回来做题的,意识到数组方面似乎可以利用,于是乎整个容量为200的数组来储存0-200个素数(建议看我这渣代码前先去看看第七章,我实在想不出啥办法了)但是问题是如何得到每一个素数呢?之前老师演示过如何判断输入的数是否为素数,相关代码如下

输入数为origin,从2开始除,如在2到origin中,有数能够被orgin整除,则origin不为素数。那我们是否可以利用这个原理,一个个列出素数知道得到我们想要的数呢?

答案当然是可行的。我们可以设置一个变量count,当origin为素数时加上1,如当origin的初始化为2时,count为1,在循环中,当origin加到3,count加1为2,当origin加到4,count不为所动,当origin加到5,count加1为3……以此类推,直到count=n或m时。在这过程中,每个count对应的数都应该被记录。相关代码可以这样写

 

值得注意的是,在这段代码中初始化a为1,这样做是为了避免程序直接从内存中抽出个0来就不好玩了。循环中的a赋值为一也十分重要,否则判断一次偶数以后,程序就死循环了,也就是n大于等于3时。对于m也相同的办法,可以copy一下(“代码复制”是程序不良的体现,可以整成函数,可是好像我不会改这个)

两段代码这样的

相加之间素数就简单多了,如下,从number[n]加到number[m]即可

/*正确做法*/能够跑起来的做法

整体代码

结果

本以为内存会很大的,表现还行?

 

原文链接:,转发请注明来源!

发表评论

  • 1 Responses to “C语言程序设计CAP-第5章编程题-素数和”
    • 浪野酷的猫

      hi,我是翁恺老师论坛上发帖的初学者,就是第五章素数题发帖求助的那位~~来这里交流了~~是直接在这里交流还是用社交平台更方便?
      其实一直在找和我一起在学这门课程的人,终于找到了 :oops:

      回复