以文本方式查看主题 - 搭建论坛 (http://bbs.diylsoft.com:8118/starforum/index.asp) -- 经验交流 (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=5) ---- 练手::有兴趣的朋友可以做一做 (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=5&id=2662) |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-17 8:29:26 -- 练手::有兴趣的朋友可以做一做 数学中有个跨世纪的大猜想 歌德巴赫猜想:任何大于2的偶数都是两个质数的和 虽然我们不是数学家,要证明它是相当困难的了! 但是要我们证明这个定理在1000以内成立是没问题的了! 定理释义: 偶数:能被2整除的数,比如:2、4、6、8、10这样的数 质数:只能被1和本身整除的数:比如:2、3、5、7、11、13、17 我们证明的方法很简单,直接穷举就可以了 比如:4=2+2 6=3+3 8=3+5 10=5+5 10=3+7 ............ 大家能不能找到1000内,所有的偶数的对应质数和? 学习编程里面,这个可是很经典的算法哦 难度并不高的,适合练手。 |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-17 8:41:57 -- 思路: 给定一个偶数x 从2开始,到x/2 逐个找对应加法 比如:8=2+6 然后检查2是不是质数(是),6是不是质数(不是),所以这个等式不符合要求 8=3+5 检查3是不是质数,是,5是不是质数,是,所以这个等式符合要求 8=4+4 4是不是质数,不是,所以不符合要求 所以:8=3+5 验证质数: 如何知道一个数是不是质数? 从2开始去除,如果被小于这个数的数整除了,就不是质数 具体思路大家想一下了 |
||||
-- 作者:雄霸天下 -- 发布时间:2004-11-18 8:28:16 -- 支持!现在发现编程并不难,难就难在算法上,一个软件质量的好坏也跟所使用的算法有直接的关系。我们在开发项目的过程中会发现,要实现同一个功能,可能有很多种解决方法,但哪一种最简单呢?所以学习算法还是很有好处的。 |
||||
-- 作者:lizhelong -- 发布时间:2004-11-18 22:17:34 -- 修改过的在8楼。 [此贴子已经被作者于2004-11-19 17:45:34编辑过]
|
||||
-- 作者:洪滨 -- 发布时间:2004-11-19 8:14:07 -- 不错!做的可能真有点累! |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 10:21:19 -- 呵呵,lizhelong做的,运行速度很快啊 不过有几点需要说明: 1. 1不是质数 所以:2=1+1就不用考虑了,定理也是从大于2的偶数(4)开始的 2.您算质数的算法似乎有不完善 12=3+9有误 9/3=3,所以9不是质数 18=3+15 也是这样的 您把奇数当质数了, 比如: 16=1+15 16=3+13 16=5+11 16=7+9 16=9+7 其中只有16=5+11正确 最后两个是重复的 这个题是不是难度大了点,不适合练手啊? |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 11:33:38 --
[此贴子已经被作者于2004-11-19 11:34:00编辑过]
|
||||
-- 作者:lizhelong -- 发布时间:2004-11-19 17:43:28 -- 原先我把质数和奇数搞混了。所以才这样,我刚刚改回来了而且修改了部分重复的数,现在是 偶数的质数和了~!请问C语言怎么看啊?
[此贴子已经被作者于2004-11-19 20:08:17编辑过]
|
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 19:48:20 -- C语言的main()函数是主函数,从它开始看 另外两个函数,分别是检查是否是质数和得到某个数的质数和算法 看起来应该比较直观的 lizhelong 你的这一个已经改进很多了 不过还是不正确哦 8=7+1 (1不是质数) 18=3+15 (15不是质数) 24=3+21 (21不正确) 你的算法里面,只验证了加法因子的第一个数是不是质数,没验证第二个 |
||||
-- 作者:lizhelong -- 发布时间:2004-11-19 20:09:56 -- 我上传传错文件了,8楼已经更改了。现在是正确的了。 |