回 帖 发 新 帖 刷新版面

主题:我昏!我急!我急!我昏!大哥,大嫂!帮帮忙!小第感激不尽!!!!

选数(存盘名:xuanshu.txt)
[问题描述]:
    已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。
    从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。
    例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为:
    3+7+12=22  3+7+19=29  7+12+19=38  3+12+19=34。
    现在,要求你计算出和为素数共有多少种。
    例如上例,只有一种的和为素数:3+7+19=29)。 
[输入]:
    键盘输入,格式为:
    n , k (1<=n<=20,k<n)
    x1,x2,…,xn (1<=xi<=5000000)
[输出]:
    屏幕输出,格式为:
    一个整数(满足条件的种数)。 
[输入输出样例]:
    输入:
    4 3
    3 7 12 19
    输出:
    1
[em10][em10][em10][color=00FF00][/color]

回复列表 (共3个回复)

沙发

DECLARE SUB LS (I)
CLS
DIM SHARED N, K, S
INPUT "N,K"; N, K
DIM SHARED X(N), A(N)
FOR I = 1 TO N: INPUT X(I): NEXT I
LS 1
PRINT S
END

SUB LS (I)
FOR J = 1 TO N
A(I) = J: F = -1
FOR P = 1 TO I - 1
IF J <= A(P) THEN F = 0: EXIT FOR
NEXT P
IF F = -1 THEN
IF I < K THEN
  LS I + 1
ELSE
  SUM = 0
  FOR L = 1 TO K: SUM = SUM + X(A(L)): NEXT L
  Q = -1
  FOR M = 2 TO SQR(SUM)
   IF SUM MOD M = 0 THEN Q = 0: EXIT FOR
  NEXT M
  IF SUM <> 1 AND Q = -1 THEN S = S + 1
END IF
END IF
NEXT J
END SUB

板凳

DECLARE SUB ZMF (I)
CLS
DIM SHARED N, K, S
INPUT N, K
DIM SHARED A(N), X(N)
FOR I = 1 TO N: INPUT X(I): NEXT I
CALL ZMF(1)
PRINT S
END

SUB ZMF (I)
FOR A = 1 TO N
  A(I) = A: F = -1
  FOR B = 1 TO I - 1
    IF A <= A(B) THEN F = 0: EXIT FOR
  NEXT B
  IF F THEN
    IF I < K THEN
      CALL ZMF(I + 1)
    ELSE
      SUM = 0
      FOR C = 1 TO K
        SUM = SUM + X(A(C))
      NEXT C
      Q = -1
      FOR Y = 2 TO SQR(SUM)
        IF SUM MOD Y = 0 THEN Q = 0
      NEXT Y
      IF Q = -1 AND SUM <> 1 THEN S = S + 1
     END IF
   END IF
NEXT A
END SUB

3 楼

DECLARE SUB ZMF (I)
CLS
DIM SHARED N, K, S
INPUT N, K
DIM SHARED A(N), X(N)
FOR I = 1 TO N: INPUT X(I): NEXT I
CALL ZMF(1)
PRINT S
END

SUB ZMF (I)
FOR A = 1 TO N
  A(I) = A: F = -1
  FOR B = 1 TO I - 1
    IF A <= A(B) THEN F = 0: EXIT FOR
  NEXT B
  IF F THEN
    IF I < K THEN
      CALL ZMF(I + 1)
    ELSE
      SUM = 0
      FOR C = 1 TO K
        SUM = SUM + X(A(C))
      NEXT C
      Q = -1
      FOR Y = 2 TO SQR(SUM)
        IF SUM MOD Y = 0 THEN Q = 0
      NEXT Y
      IF Q = -1 AND SUM <> 1 THEN S = S + 1
     END IF
   END IF
NEXT A
END SUB

我来回复

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