zoj_2723 Semi-Prime 半素数

该博客介绍了一种利用STL中的vector和set数据结构来解决大数据量下的半素数问题。博主通过建立素数和半素数表,避免了对每个测试数据进行因式分解导致的超时错误。文章重点讲述了素数判断的优化方法,以及为何选择vector存储素数和set存储半素数的理由,并提供了相关的代码实现。
摘要由CSDN通过智能技术生成

题目链接:zoj_2723 Semi-Prime 半素数

       又是一道有关素数的题,这回找的是半素数,即除了1和本身外,只有两个素数因子。由于数据量大(2<N<1000 000),所以如果将每个测试数据都做因式分解,一定会出现超时错误。

       基本思路是建立一个[2,1000 000]范围内的半素数表,读入数据,直接检索。

       为了解决这个问题,我们继续使用造福人类的STL——vector & set,分别用来存储素数和半素数。为什么素数的存储不用set呢?因为我们的终极目标不是判断素数,而是半素数。采用vector存储素数有利于线性查找,在for循环中,可直接根据下标遍历素数表。而采用set存储半素数,是因为set是平衡检索二叉树,可以将元素自动排序,检索速度最快。

       这里再复习一下素数的判断方法:首先排除2以外的所有偶数,然后从奇数中排除素数的倍数,剩下的就是素数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值