Archive for February, 2010

Linear Prime Sieves


28 Feb

线性素数筛法。。记得是某年某月某日RGT神牛虐我时提起的。

思路及证明如下:

如果已找出的素数prime[j]能够整除现在的倍数因子i (j从1开始单增)

i = prime[j] * k 可以断定prime[j] 为i的最小素因子(因为j在单增,如果不是最小,说明存在更小的prime能整除i,则矛盾)

再证明对于prime[j'] * i没有必要标记:(j’ > j)

因为 存在prime[j'] * i = (prime[j] * k) * prime[j'] = (prime[j'] * k) * prime[j] = i’ * prime[j]

i’ > i 说明在 i’  时,prime[j'] * i 会被标记 ,而且 prime[j] 是 prime[j'] * i 的最小素因子

即,对于任意一个素数,只会标记以它为最小素因子的合数。

而对于任意一个合数,它的最小素因子只有一个

故任意一个合数只会被标记一次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cstring>
#include <cstdio>
 
#define MAXP 100000
 
using namespace std;
 
bool isp[MAXP];
int prime[MAXP],cp = 0;
 
void sprime(int Limit) {
 
	memset(isp,255,sizeof(isp));
	for (int i = 2; i <= Limit; i++)
	{
		if (isp[i]) prime[++cp] = i;//collect primes
		for (int j = 1; j <= cp && (prime[j] * i <= Limit); j++)
		{
			isp[prime[j] * i] = 0;
			if (!(i % prime[j])) break;//the most important and efficient
		}
	}
}
 
int main() {
 
	int N;
 
	freopen("prime.in","r",stdin);
	freopen("prime.out","w",stdout);
 
	scanf("%d",&N);
	sprime(N);
	for (int i = 1; i <= cp; i++) printf("%d ",prime[i]);
}

Plan


26 Feb

1 计划
2     4.3是省选
3     长期计划:
4         高一这次省选以平常心面对,水平不够不能进入的话也不要灰心
5         高二停课 专心oi
6     近期计划:
7         能尽快把USACO做完,然后做spoj,mipt上的题
8         重点是搜索(现在比较弱),DP以及网络流还有数据结构相关
9     总:
10         计划不在多 在于实行。。美好的畅想还需要脚踏实地来成真

搬家 搬家 杂感


23 Feb

我住的地方搬了。。目前在的位置: N 30°40’25.03″ E 104°06’32.43″

我的网站09年底搬至Tedyin.com..

已经很久没有写日志了。。今天写写看看最近颓废的生活是否有所转变。

春晚。。我看到了点自由的东西。。至少某些年前不可能的东西被搬上舞台。

韩寒的《春天的故事》似乎我心中某些不快泄出。。 不过还是的。。不要迷恋gcd 它毕竟是个传说

传说在继续。。

春晚两次提及曾轶可的《狮子座》。我对她了解不深。但是就她坚持的原创来说。确实是好样的

(对于有人指出的抄袭。。在有充分证据前不要妄加相信。有一个争议不能代表全部)

批评的人可以自己想想。

许多人从来不缺创造 只缺善待宽容的一刻心

不缺竞争 只缺在名利嫉妒和跟风前的一丝冷静

一群骂着中国无创新无自由的人。。问问他们自己算不算中国的

他们不给别人自由和尊重 又怎能被看起

一个人的时候

不是不想写日志

一个人的时候

只是怕上网

一个人的时候

如果看到大片和谐内容

才不会学你把它丢一边。

贴出一天的颓废成果。。最大流标号法代码: (more…)

Teddy

Studies,OI and Love