求在10000范围内的所有质数,要求其的值等于两个质数的平方和

一道ACM题目,寻找10000以内满足K=A^2+B^2的质数,其中A和B也是质数。利用哥德巴赫猜想简化问题,优化算法至O(N^2),通过判断K=4+B^2是否为质数来求解。
摘要由CSDN通过智能技术生成
一条学校的ACM演练题目,很让人郁闷



今天之所以想讲关于求质数的算法,完全跟这条题目有关,看到题目的朋友一定现在已经有了思路了吧,不过下面的讲解会让你很郁闷,hoho,带上你的思维,跟着我来



第一,分析题目 排除10000以内,就是求一个质数满足其的值等于两个质数的平方和就是要满足



K= A^2 + B^2 这个要求,其中A,B是质数,K当然是要求的质数,那好解法可以这样求一个质数,然后再求出另一个不同的,为什么不同,要是相同 K>2的话,K肯定不质数了,好然后再平方啊,再来相加,最后再验证所得的K是不质数了,结果出来,说实话,当你等待了N秒之后发现结构仍然没有出来之后的时候你会觉得自己的算法该优化了,其实我开始是这么想的,结果。。。





好,说说我的想法 ,讲点数学吧



(1) (A + B)^2 = A^2 + 2*AB + B^2 ,"平方和"与"和的平方的"转换公式



(2)奇偶公式:

两个偶数之和是偶数,两个偶数之积是偶数

两个奇数之和是偶数,两个奇数之积是奇数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值