回 帖 发 新 帖 刷新版面

主题:请教各位高人

我是QBASIC初学者,有问题请教各位高人:

一个素数,去掉最高位还是素数,再去掉剩下的最高位,还是素数
重复做以上动作,剩下个位,此时还是素数。

编程找出 2-3000以内的这种数

回复列表 (共6个回复)

沙发

DECLARE FUNCTION isprime! (m!)
CLS
FOR i = 2 TO 3000
    f = LEN(STR$(i)) - 1
    j = i
    IF isprime(j) THEN
       k = 0
       DO
         j = VAL(RIGHT$(LTRIM$(STR$(j)), LEN(LTRIM$(STR$(j))) - 1))
         f = f - 1
         IF isprime(j) = 0 THEN k = 1: EXIT DO
       LOOP UNTIL f = 0
       IF k = 0 THEN PRINT i;
    END IF
NEXT i
END

FUNCTION isprime (m)
FOR i = 2 TO INT(SQR(m))
    IF m MOD i = 0 THEN isprime = 0: EXIT FUNCTION
NEXT i
isprime = 1
END FUNCTION

板凳

TO:Matodied

你算是一个学习比较快的人,建议你去看看我写的"关于素数"之类的东西.你才会知道,什么叫算法.

3 楼

谢谢

那么合数呢?有得请教请教您了

4 楼

合数的算法与素数差不多只需把对素数的判定改成对合数的判定就行了。

5 楼

如果是绝对合数指需要把IF isprime(j) = 0 THEN k = 1: EXIT DO这句的0改为1就行了。

6 楼

谢谢!

我来回复

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