回 帖 发 新 帖 刷新版面

主题:2-100的质因数 并列出来 如:100=2*2*5*5

CLS
WHILE n <= 100
   n = b: n = n + 1: b = n: p = 0
   DO
     a = 0
     FOR i = 2 TO INT(SQR(n))
        FOR j = n - 1 TO INT(SQR(n)) STEP -1
          IF i * j = n THEN
            p = p + 1: a(p) = i
            n = j: a = 1
            EXIT FOR
          ELSE
            a = 0
          END IF
        NEXT j
        IF n = j THEN EXIT FOR
     NEXT i
     IF a = 0 THEN a(p + 1) = n
   LOOP UNTIL a = 0
PRINT b; "="; a(1);
IF p = 0 THEN
   PRINT
ELSE
   FOR i = 2 TO p + 1
     PRINT "*"; a(i);
   NEXT i
   PRINT ,
END IF
WEND
END


出来多了个101=101 怎么回事?

回复列表 (共5个回复)

沙发

自己解决了
CLS
   n = b: n = n + 1: b = n: p = 0
   DO
     a = 0
     FOR i = 2 TO INT(SQR(n))
        FOR j = n - 1 TO INT(SQR(n)) STEP -1
          IF i * j = n THEN
            p = p + 1: a(p) = i
            n = j: a = 1
            EXIT FOR
          ELSE
            a = 0
          END IF
        NEXT j
        IF n = j THEN EXIT FOR
     NEXT i
     IF a = 0 THEN a(p + 1) = n
   LOOP UNTIL a = 0
PRINT b; "="; a(1);
IF p = 0 THEN
   PRINT
ELSE
   FOR i = 2 TO p + 1
     PRINT "*"; a(i);
   NEXT i
   PRINT ,
END IF
LOOP UNTIL b > 99
END

板凳

但还有一点
怎么把它排得更整齐
我想了用TAB( ) 但不知道怎么用参数 和放哪?

3 楼

没人回答?

4 楼

把 print 后面的分号改成逗号

5 楼

PRINT b, "=", a(1),
IF p = 0 THEN
   PRINT
ELSE
   FOR i = 2 TO p + 1
     PRINT "*", a(i),
   NEXT i
END IF
LOOP UNTIL b > 99
END

我来回复

您尚未登录,请登录后再回复。点此登录或注册