回 帖 发 新 帖 刷新版面

主题:[讨论][color=FF0000]十万火急!!!高手们快来帮我解决这个QB难题呀[/color]

【问题描述】
我们将左右对称的自然数称为回文数,例如:121,4114等;
将只能被1与其本身整除的自然数称之为素数,例如:7,353等。
键入N,M,求出N至M(含N与M)之间既是回文数又是素数的自然数共有多少个?

【问题分析】
本题可以分两步来做:1、求出N至M中的回文数;2、对于每一个求出的回文数,判断其是否为素数。 
 
【程序清单】
INPUT "N,M=";N,M
DIM A(100)
S=0
FOR I=N TO M
    Q=0
J=0
T=I

 DO    
  J=J+1
    (   ①   )   
T=INT(T/10)
LOOP UNTIL T=0

FOR K=1 TO INT(J/2)            
 IF (    ②   )          THEN Q=1
NEXT K

 IF  (    ③      ) THEN
  FOR K=2 TO SQR(I)
   IF I MOD K=0 THEN  (     ④      ) 
  NEXT K
END IF

IF I=1 THEN Q=1
IF Q=0 THEN S=S+1

NEXT I

PRINT S

END

[em10]

回复列表 (共5个回复)

沙发

不用这么做(没有否定这种方法的意思),可以运用一种规则产生回文数,判断是否在N M 之间,并判断是否是素数


我还是建议少做这类题目为好,容易使思维僵化


不过我做这种题也颇有心得,下面给你一点提示

①是把10进制数用数组存下来
②判断是否是回文
③判断前面检查的结果是否是回文数
④标记该数不是素数

板凳

CLS
INPUT n, m
FOR i = n TO m
b$ = ""
FOR j = 2 TO i / 2
IF i MOD j = 0 THEN 10
NEXT j
a$ = MID$(STR$(i), 2)
l = LEN(a$)
FOR j = l TO 1 STEP -1
b$ = b$ + MID$(a$, j, 1)
NEXT j
IF b$ = a$ THEN n = n + 1
10 NEXT i
PRINT n
END
这是我做的程序,可能有点慢,请见量

3 楼


谢谢高手指点,这道题是一个填空题,我就是不知道怎么填才好,看不明白这个程序.

4 楼


CLS
INPUT n, m
FOR i = n TO m
b$ = ""
FOR j = 2 TO i / 2
IF i MOD j = 0 THEN 10
NEXT j
a$ = MID$(STR$(i), 2)
l = LEN(a$)
FOR j = l TO 1 STEP -1
b$ = b$ + MID$(a$, j, 1)
NEXT j
IF b$ = a$ THEN n = n + 1
10 NEXT i
PRINT n
END
[em9]

5 楼

回文数有什么特征吗?不是对称这一点!

我来回复

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