回 帖 发 新 帖 刷新版面

主题:这有3题!!做出加30分!!

1、最大公约数与最小公倍数问题 
[问题描述]
输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。
条件:
1、P、Q是正整数
2、要求P、Q以xO为最大公约数,以yO为最小公倍数。
试求,满足条件的所有可能的两个正整数的个数。
[样例]
输入:x0=3 y0=60
输出:4
说明:(不用输出)此时的 P Q 分别为,
3 60
15 12
12 15
60 3
所以,满足条件的所有可能的两个正整数的个数共4种。

2、求无暇素数
[问题描述]  一个两位数A本身是素数,若将其个位数字与十位数字交换,得到一个新的两位数B,而B也是素数,我们则称A为无暇素数
例如:31是素数,个位数字与十位数字交换后得到13,也是素数,所以31是无暇素数。
问题:给出一个数字字符串(即字串中的字符全部由数字组成),求出其所有组成的无暇素数。

[输入]
一个数字字符串(长度<=20),以“%”结束
[输出]
全部的无暇素数,之间用一个逗号隔开。

[输入样例]
321314%

[输出样例]
13,31

3、回文数列
[问题描述] 
对一个正整数K,求出K的所有拆分,并统计输出其中回文数列的个数。
所谓回文数列是指该数列中的所有数字,从左向右或从右向左看都相同。
例如:
   K=4时,有如下的拆分:
   4=1+1+1+1   (回文数列1)
    =1+1+2
    =1+2+1     (回文数列2)
    =2+1+1
=2+2       (回文数列3)
    =1+3
    =3+1

[输入]   一个正整数K(1<=K<=26)

[输出]   满足条件的回文数列的个数

[输入样例]   4
[输出样例]   3

回复列表 (共9个回复)

沙发

是江苏某年的考题,好像有试题答案书

板凳

别说风凉话!!!

3 楼

DECLARE FUNCTION gcd! (a!, b!)
CLS
INPUT x0, y0
FOR p = x0 TO y0
    FOR q = x0 TO y0
        IF p <> q THEN
           IF gcd(p, q) = x0 THEN
              IF p * q / x0 = y0 THEN s = s + 1
           END IF
        END IF
NEXT q, p
PRINT s
END

FUNCTION gcd (a, b)
         c = a MOD b
         IF c = 0 THEN gcd = b ELSE gcd = gcd(b, c)
END FUNCTION

4 楼

上面的是第一题,这是第二题.
CLS
INPUT n$
l = LEN(n$) - 1
DIM a$(l - 1)
FOR i = 1 TO l - 1
    m$ = MID$(n$, i, 2)
    m2$ = MID$(m$, 2, 1) + MID$(m$, 1, 1)
    a = VAL(m$): GOSUB isp: p1 = f
    a = VAL(m2$): GOSUB isp: p2 = f
    IF p1 = 1 AND p2 = 1 THEN
       FOR b = 1 TO j
           IF m$ = a$(b) THEN GOTO 1
       NEXT b
       j = j + 1: a$(j) = m$
    END IF
1 NEXT i
FOR i = 1 TO j - 1
    PRINT a$(i); ",";
NEXT i: PRINT a$(j): END
isp:
f = 1
FOR k = 2 TO INT(SQR(a))
    IF a MOD k = 0 THEN f = 0: RETURN
NEXT k
RETURN

5 楼

有一点麻烦!!!

6 楼

第3题可是有点难度了,不过我的书上有!背下来不就行了?但分还要加.
DECLARE SUB pdhw ()
CLS
DIM SHARED t, total
INPUT n
DIM SHARED a(0 TO n)
total = 0: t = 1: s = 0
DO
  a(t) = a(t) + 1: s = s + a(t)
  IF s >= n THEN
     IF s = n THEN pdhw
     s = s - a(t): t = t - 1: s = s - a(t)
  ELSE
     t = t + 1: a(t) = 0
  END IF
LOOP UNTIL t = 0
PRINT "Total:", total
END

SUB pdhw
    FOR i = 1 TO INT(t / 2)
        IF a(i) <> a(t + 1 - i) THEN f = 0: EXIT FOR ELSE f = 1
    NEXT i
    IF f = 1 THEN total = total + 1
END SUB

7 楼

DECLARE FUNCTION gcd! (a!, b!)
CLS
INPUT x0, y0
FOR p = x0 TO y0
    FOR q = x0 TO y0
        IF p <> q THEN
           IF gcd(p, q) = x0 THEN
              IF p * q / x0 = y0 THEN s = s + 1
           END IF
        END IF
NEXT q, p
PRINT s
END

FUNCTION gcd (a, b)
         c = a MOD b
         IF c = 0 THEN gcd = b ELSE gcd = gcd(b, c)
END FUNCTION

8 楼

for i=10 to 99
  a=i mod 10
  b=i \10
  c=a*10+b
  f=0
  for j=1 to i
    if i mod j=0 then f=f+1
  next j
  if f=2 then 
    for q=1 to c
      g=0
      for r=1 to q
        if q mod r=0 then g=g+1
    next r,q
  if g=2 then ?i,c
  end if
next i
end
[em10][em15]

9 楼

第2题
CLS
INPUT A$: L = LEN(A$)
FOR I = 1 TO L - 2
A = VAL(MID$(A$, I, 2))
FOR J = 2 TO SQR(A)
IF A MOD J = 0 THEN 10
NEXT J: S = S + 1: A(S) = A
10 NEXT I
FOR I = 1 TO S: A = A(I)
X = A MOD 10: Y = A \ 10: B = X * 10 + Y
FOR J = 1 TO L
IF A = B(J) THEN 1
NEXT J: Z = Z + 1: B(Z) = A
1 NEXT I
FOR I = 1 TO Z: PRINT B(I);
IF I <> Z THEN PRINT ",";
NEXT I
END
一定要加分呀!

我来回复

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