回 帖 发 新 帖 刷新版面

主题:求助:请大家编一个能判断11位长整数的完整的质数判断程序!50分哦。谢谢。

请大家编一个能判断11位长整数的完整的质数判断程序!
有一定难度的一个编程哦!
满足条件的程序就可以加50分,加油!
我期待者大家能够做出这个很有创意的程序!
期待着。。。。。。
高手们这舞台是你们的!

程序要求:输入一个11位正整数能够判断其是否为质数就行了

回复列表 (共12个回复)

沙发

先发一个判断十位的。
CLS
INPUT a
FOR i = 2 TO INT(SQR(a))
IF a MOD i = 0 THEN s = 1
NEXT
IF s = 1 THEN
PRINT "NO"
ELSE
PRINT "YES"
END IF
 

 

板凳

可以用双精度。
(双精度定点数的范围最多15位)
CLS
DIM i AS DOUBLE, n AS DOUBLE
INPUT n: f = 1
IF LEN(STR$(n)) > 16 THEN PRINT "Overflow.": END
FOR i = 2 TO INT(SQR(n))
    IF n - INT(n / i) * i = 0 THEN f = 0: EXIT FOR
NEXT i
IF f THEN PRINT "Yes" ELSE PRINT "No"
END

例:
?543959439594359
Yes

3 楼


Matodied的作品满足了条件,不错的程序。
你再发个帖子,给你再加20分。

顺便再问个问题,超过15位的整数,就没有办法了吗?
突破极限,追求完美!

4 楼

其实这个程序完全能处理超过15位以上的数,只要把第4行删掉就可以了。

要记住,双精度的范围最多300多位呢!

只是时间长的一点,不知道你可等得及。

5 楼


Matodied真的很优秀哦,编的质数判断程序代码可谓程序中的极品。
只有7行的代码就可以判断那么大的质数,佩服,佩服!
一个帖子中最高规定只能给同一人加50分。
没有没有分子加了,欢迎你继续回帖。

高手啊,大家都来看看和学习这个程序极品吧!

6 楼

[quote]其实这个程序完全能处理超过15位以上的数,只要把第4行删掉就可以了。

要记住,双精度的范围最多300多位呢!

只是时间长的一点,不知道你可等得及。[/quote]
这个说法不对,可表示的范围和精确度是两个概念
其实只要大于14位,结果就开始不可靠了

7 楼

[em54][em54][em54][em54][em54][em54][em54][em54]
连狱中肺炎都惊动了,怕怕,不过说得有道理.Mato要学学

其实我真没想到,还以为这样的循环要半天时间,其实也就几十秒的时候,
不过Mato的代码应该再精简一点,速度可以加快一半.

defcur a-z
INPUT n
if Z(n) THEN PRINT "Yes" ELSE PRINT "No"

function Z(n)
IF n = INT(n / 2) * 2  THEN EXIT function
FOR i = 3 TO INT(SQR(n)) step 2
    IF n = INT(n / i) * i THEN EXIT function
NEXT
Z=-1
END function

例:
?543959439594359
Yes

8 楼

To moz:
我也想到过这种方法,但是这种方法在有些情况下就不准了,比如:
n = 3542315423459237548923757923475923
n是一个奇数,但是QB会把它当成偶数,比如你输入PRINT n - INT(n / 2) * 2(n除以2的余数),输出结果是0。

9 楼

狱中肺炎已经告诉你了,精度与范围是两个概念,
没有精度,范围再大也没用,数值越大,误差越大.结果当然不可靠了.

10 楼

真正要分解一个整数,最好就是用概率算法,时间平均复杂度是O(n^0.25)
比你的O(n^0.5)还要快得多

我来回复

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