主题:请教各位高人
小小傻瓜
[专家分:150] 发布于 2007-07-24 12:37:00
我是QBASIC初学者,有问题请教各位高人:
一个素数,去掉最高位还是素数,再去掉剩下的最高位,还是素数
重复做以上动作,剩下个位,此时还是素数。
编程找出 2-3000以内的这种数
最后更新于:2007-07-24 12:59:00
回复列表 (共6个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-24 13:22:00
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
板凳
moz [专家分:37620] 发布于 2007-07-24 13:29:00
TO:Matodied
你算是一个学习比较快的人,建议你去看看我写的"关于素数"之类的东西.你才会知道,什么叫算法.
3 楼
小小傻瓜 [专家分:150] 发布于 2007-07-24 14:24:00
谢谢
那么合数呢?有得请教请教您了
4 楼
剑圣风暴 [专家分:450] 发布于 2007-07-24 17:47:00
合数的算法与素数差不多只需把对素数的判定改成对合数的判定就行了。
5 楼
Matodied [专家分:7560] 发布于 2007-07-24 19:16:00
如果是绝对合数指需要把IF isprime(j) = 0 THEN k = 1: EXIT DO这句的0改为1就行了。
6 楼
小小傻瓜 [专家分:150] 发布于 2007-07-27 15:03:00
谢谢!
我来回复