菜鸟在次发个问题:
验证歌德巴赫猜想:任何一个大于6的偶数都能拆成一个素数+另一个素数呢?
求高手编程!
小鸟在次先谢了!
菜鸟在次发个问题:
验证歌德巴赫猜想:任何一个大于6的偶数都能拆成一个素数+另一个素数呢?
求高手编程!
小鸟在次先谢了!
验证并不难,但是你的问题给定的条件不足。>6到底是多大?无穷大?条件有时就是决定了用那种算法最好。
设给定数y
第一种:准备一个足够大的素数表(S0,S1,........Sn),查找y-S (0~n)是否有解在(S0,S1,....Sn)
第二种:求<y的素数S,再验证y-s是否是素数
既然谈到验证,那就简单多了,
给你个函数类型: bool test(int a);
如果每讲错,最小的素数为2, 那么 a-2 得到另一个数为 b, 监测 b 是否为素数,如果是,函数返回 true, 否则,b =a-3 再检测 b 是否为素数,如果 true, 则检测完毕,否则 b =a-5, 也就是减去下一个素数,这里为5,一直这样循环下去,直到检测成功,或下一个素数已经大于 a 本身,则检测结果为 false.
程序我就不写了。
这个课题值得研究,虽然这个猜想我们证明不了
但编一个最简洁,最快的程序验证一个数(大于或等于6的偶数)是否满足还是值得一试的
六楼的函数用的是3楼的思路
显然这个思路是在要验证的数很大的时侯是简直没法做的
首先你要建立一个小于要验证的数的一半的质数表,这个表将占去巨大的空间
其次,整型变量最大可表示到2的32次幂减一(无符长整型,不可用实型),再大的数就验证不了了
[此贴子已经被作者于2004-10-03 20:58:11编辑过]