对于奇数2N+1为合数,则有2N+1=(2m+1)(2n+1)=4mn+2m+2n+1
所以有:N=2mn+m+n=n(2m+1)+m=m mod(2m+1)
筛除这类N值就是素数
aardio的代码如下
//3.素数的求法
function isPrime(N){
if(N<2){
win.msgbox("素数判断函数只处理大于1的整数","素数判断函数说明",,)
return null;
}
if(N>2 && N%2==0) return 0;
var x=(N-1)/2
var max=math.sqrt(x/2)
for(m=1;max;1){
if(x%(2*m+1)==m) return 0;
}
return 1;
}
//4、生成s到e之间的素数表
function primetab(s,e){
var ptab={}
var m=1
for(i=s;e;1){
if(isPrime(i)){
ptab[m]=i
m++
}
}
return ptab;
}