埃氏筛选
筛选
阿聊
愿我千帆过尽,归来仍是少年
展开
-
hdu 2098 分拆素数和
题目 不知道为何,总是把一个问题想得那么复杂,这个复杂不是思维上的复杂,就是说一个问题本来两步就可以走完的,但是我非要花五六步来走,总觉得这样逻辑上会比较清晰。 结果,还不一定对。。。。 这道题,我开始想的是,把0到10000内的所有,偶数和素数记录下来,然后去算组成偶数的素数有几对,意味着每一个偶数都要去便利 下面是仿照着别人的代码: 只是注释的地方不是很了解,为什么可以不用加这句话 ...原创 2017-09-25 15:24:13 · 197 阅读 · 0 评论 -
hdu 2189 悼念512汶川大地震遇难同胞——来生一起走
题目 这道题用了,埃式筛选法和背包,我自己没有做出来,看了别人的代码,我也做不出来,特别是c[j]+=c[j-b[i]];弄了好久都没有弄懂。 这道题的解题思路:主要是先把150以内的所有素数找出来,存到一个数组里面,然后再用背包问题解决。 #include #include int a[151]={0},b[151],c[151]; //数组a存储数字的因子和,数组b存储素数,数组c存原创 2017-10-16 13:03:56 · 318 阅读 · 0 评论 -
hdu2710 Max Factor
题目//下面这个是最先用的方法,因为学姐先讲完这个,所以懒得写代码,就将就着这个用,结果搞了老半天,还是错了,心累。。#include<stdio.h> #include<string.h> int prime[5010]; bool isprime[5010]; int solve(int n) { memset(prime,0,sizeof(prime)); ...原创 2017-07-24 16:42:07 · 238 阅读 · 0 评论 -
hdu 1164 Eddy's research I
http://acm.hdu.edu.cn/showproblem.php?pid=1164题意很简单,只是写代码的时候需要注意几个问题一、筛选素数的时候记得用埃式筛选法,要是直接找可能会WA。int prime(int n) { int flag = 0; for(int i=2;i<=sqrt(n);i++) { if(n%i==0){ flag = 1;break; ...原创 2018-03-23 17:03:04 · 139 阅读 · 0 评论 -
素数筛法及其优化
今天试了一下素数筛法 要求1-100000范围内的素数,如果用自定义函数挨个求,对于大范围的求素数会非常耗时。复杂度为O(n * sqrt(n)),所以可以用素数筛法来求大范围内的素数 说一下原理: 开一个标记数组,全部初始化为true,0、1不是素数,直接从数组里划掉。 从2开始,凡是2的倍数、且小于100000的,全部标记为false。 再找2以后的、是素数的下一位数,是3 从3开始,凡是3的...转载 2018-03-26 20:46:35 · 379 阅读 · 0 评论 -
hdu 2136 Largest prime factor
题目 题意:要求输出所给定的数n的最大质因子的序号,0<n<1000000。设1的序号为0,则2的序号为1,3的序号为2,5的序号为3,以此类推。 #include <cstdio> #include <iostream> using namespace std; const int Max = 1e6+10; int num[Max]; v...原创 2018-09-10 18:26:47 · 117 阅读 · 0 评论