do
input Q&
if Q&=IsZhiShu&(Q&) then print Q&;"是质数"
loop while Q&
FUNCTION IsZhiShu& (a&)
f% = FREEFILE
OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&)
IF LOF(f%) = 0 THEN
z& = 2
PUT #f%, 1, z&
z& = 3
PUT #f%, 2, z&
END IF
e& = LOF(f%) \ LEN(a&)
GET #f%, e&, z&
SELECT CASE a&
CASE IS <= 2
IsZhiShu& = 2
CASE IS >= z&
DO UNTIL z& >= a&
DO
z& = z& + 2
q& = SQR(z&)
i& = 2
DO
GET #f%, i&, k&
IF z& MOD k& = 0 THEN EXIT DO
i& = i& + 1
LOOP UNTIL k& > q&
LOOP UNTIL k& > q&
e& = e& + 1
PUT #f%, e&, z&
'LOCATE 5, 5: PRINT e&, z&
LOOP
IsZhiShu& = z&
CASE IS < z&
l& = 1
r& = e&
DO
m& = (r& + l&) / 2
GET #f%, m&, b&
'if a&=b& then
' r&=m&
' exit do
'end if
IF a& > b& THEN l& = m& ELSE r& = m&
LOOP UNTIL r& - l& < 2
GET #f%, r&, IsZhiShu&
END SELECT
CLOSE #f%
END FUNCTION
FUNCTION fenjie$ (x&)
if x&=0 then
fenjie$="0"
exit function
elseif x&<0 then
x&=-x&
k$="-1"
end if
f% = FREEFILE
OPEN "质数表" FOR RANDOM AS #f% LEN = LEN(a&)
i& = 1
j& = 2
DO UNTIL x& = 1
IF x& MOD j& = 0 THEN
x& = x& / j&
IF k$ = "" THEN k$ = LTRIM$(STR$(j&)) ELSE k$ = k$ + "*" + LTRIM$(STR$(j&))
ELSE
i& = i& + 1
GET #f%, i&, j&
END IF
LOOP
CLOSE #f%
fenjie$ = k$
END FUNCTION
正文
关于质数(素数)2005-08-03 11:39:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/mozo/3412.html
阅读(3737) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论