如何判断一定范围内的素数?
mfp吧
全部回复
仅看楼主
level 12
喂wswswsws 楼主
function pdss()
variable a,b,c
for variable idx0 = 3 to 100 step 1
a=idx0
for variable idx1 = a-1 to 2 step -1
b=idx1
if (mod(a,b)!=0)
print(+a+"\n")
break
endif
next
next
endf
判断的那里不会。
@woshiwppaa
2016年02月10日 01点02分 1
level 1
直接调用is_prime函数
if is_prime(a)
print (a + "是质数\n")
endif
2016年02月10日 03点02分 2
谢了!
2016年02月10日 08点02分
level 8
预定义的那个质数判断太慢了。我的设备判断100000000003用那个is_prime根本判断不出来啊
然后自己写了一个,程序比较长,但是对于所有因数都大于100的数,速度差不多是3倍以上
function my_prime(n)
n=floor(abs(n))
if n<4
if n<2
return false
endif
return true
endif
if !mod(n,2)
return false
endif
if !mod(n,3)
return false
endif
variable b=ceil(pow(n,0.5)),c=5
while c<b
if !mod(n,c)
return false
endif
c=c+2
if !mod(n,c)
return false
endif
c=c+4
loop
return true
2016年02月14日 03点02分 3
level 8
@woshiwppaa
:-D 要不下次更新把我的prime加上,虽然程序一看就是新手做的,但欢迎实验速度
我用的是
Variable t=now()
........
Print(now()-t)
2016年02月14日 03点02分 4
level 8
可以看图
2016年02月14日 03点02分 5
不错,数字越大越明显。
2016年02月14日 14点02分
level 12
喂wswswsws 楼主
快了十多倍。[真棒]
2016年02月14日 14点02分 6
1