<分区>
在制作素数列表时,需要检查一个数是否可以被任何等于或小于其平方根的素数整除。但是,与其每次都检查质数是否大于被检查数的平方根(如本页所做:Optimize prime number finder and cpu speed checker in R),不如知道它在列表中的位置会很有用。一个数与素数列表中大于其平方根的最小素数的位置之间是否存在任何关系或方程式。以下代码(在 R 中)和图表显示可能存在关系:
pnum_sqrtpos_plot = function(){
p_nums = c(2L,3L)
counter = 3L
sqrtcounter=1L
sqrtposlist = c(1L,1L)
countchecker=10000
while (counter<200000){
isPRIME = FALSE
counter = counter +2L
sqrtcounter = sqrt(counter)
for(n in p_nums) {
if(n > sqrtcounter){ isPRIME=TRUE; break; }
if(counter %% n == 0){ isPRIME = FALSE; break;}
}
if(isPRIME) { p_nums[length(p_nums)+1]=counter
sqrtpos = which(p_nums>sqrt(counter))[1]
sqrtposlist[length(sqrtposlist)+1] = sqrtpos
}
if(counter > countchecker) {cat("Numbers checked: ",counter,"\n");
counterchecker = countchecker+10000;
}
}
plot(p_nums, sqrtposlist
, main="Relation between number & \nposition of smallest prime larger than its square root in list of primes"
, xlab="Number", ylab="Position in list of prime numbers")
}
关系/方程式可能是什么?感谢您的帮助。