求X个的质数,嗯,这个算法好简洁
算法P:
求X个不同的质数,PRIME[]为一个数组,存储所有求得的质数
P1. [初始化]PRIME[1]<-2, N<-3, J<-1(N跑遍所有奇数,因为只有奇数可以成为质数
P1. [初始化]PRIME[1]<-2, N<-3, J<-1(N跑遍所有奇数,因为只有奇数可以成为质数
的候选者;J用来标记至今已找到多少个质数)
P2. [N是质数]置J<-J+1, PRIME[J]<-N
P3. [找到X个?]若J=X,则全部要求的质数找到,退出程序
P4. [增加N]置N<-N+2
P5. [K<-2]置K<-2(PRIME[K]将跑遍N的所有可能的质因子)
P6. [K/PRIME[K]?]以PRIME[K]除K;设Q是商,R是余数,若R=0(因此N不是质数),转
P2. [N是质数]置J<-J+1, PRIME[J]<-N
P3. [找到X个?]若J=X,则全部要求的质数找到,退出程序
P4. [增加N]置N<-N+2
P5. [K<-2]置K<-2(PRIME[K]将跑遍N的所有可能的质因子)
P6. [K/PRIME[K]?]以PRIME[K]除K;设Q是商,R是余数,若R=0(因此N不是质数),转
向P4
P7. [PRIME[K]足够大了?]若Q<=PRIME[K],则转P2(在这种情况下,N必然是质数)
P8. [增加K]K加1,并转P6
P7. [PRIME[K]足够大了?]若Q<=PRIME[K],则转P2(在这种情况下,N必然是质数)
P8. [增加K]K加1,并转P6
算法来自The Art of Programming,的确是大师,窥一斑而见全豹,就这么个小东西都能看出来人家的厉害之处,我以为求N是不是质数就要一个一个挨个除到N的平方根呢,这个方法可快多了。