正文

关于质数(素数)2005-08-03 11:39:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/mozo/3412.html

分享到:

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

阅读(3737) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册