主题:求素数的问题,谢谢
新人
[专家分:30] 发布于 2005-04-16 21:37:00
我刚接触QB,还请大家多多指点,下面是我编的一个求素数的程序,不知对否.请看一下,谢谢!!
设N为任一整数.
I为[2,N-1]之间任一整数:
R为N/I的余数.
判断N是否为一个素数.
程序如下:
INPUT N
I=2
FLAG=0
WHILE N MOD I <>0
I=I+1
IF I>N-1 THEN FLAG=1
WEND
IF FLAG=0 THEN PRINT N; "IS NOT PRIME NUMBER"
IF FLAG=1 THEN PRINT N; "IS A PRIME NUMBER"
这是算法之一,有一点我不明白,是不是这种算法一定要用FLAG才可以呢,不用好像不行.
回复列表 (共10个回复)
沙发
阿珠 [专家分:100] 发布于 2005-04-16 23:28:00
flag是一个标志位,标志着2 到N-1之间的因数,这之间的因数为零,才是素数。
板凳
def [专家分:3380] 发布于 2005-04-17 01:19:00
这样比较号
INPUT "N=",N
I=2
FLAG=0
DO
IF N MOD I THEN
EXIT DO
ELSE
I=I+1
IF I>N-1 THEN FLAG=1
END IF
LOOP
IF FLAG THEN
PRINT N; "IS A PRIME NUMBER"
ELSE
PRINT N; "IS NOT PRIME NUMBER"
3 楼
def [专家分:3380] 发布于 2005-04-17 01:31:00
这样也行
INPUT "N=",N
I=2
IF N=0 THEN
PRINT N;"是和数"
END
ELSEIF N=1 THEN
PRINT N;"是单数(^_^)"
END
ELSEIF N<0 THEN
PRINT N;"是负数(^_^)"
END
END IF
DO
IF N MOD I THEN
EXIT DO
ELSE
I=I+1
IF I>N-1 THEN
PRINT N;"是质数"
EXIT DO
ELSE
PRINT N;"是和数"
EXIT DO
END IF
END IF
LOOP
4 楼
88324837 [专家分:490] 发布于 2005-04-17 11:25:00
FLAG只是一个变量而已,你可以把她换做其他的变量也可以
求素数比较简单的方法
INPUT N
FOR A=2 TO N-1
IF N <>2 AND N MOD A=0 THEN Y=1
NEXT A
IF Y=1 THEN PRINT "不是素数" ELSE PRINT "是素数"
END
5 楼
wqbt [专家分:30] 发布于 2005-04-17 15:04:00
flag只是判断上面所执行的N的值,只要非FLAG为非0的任一数都会成立的
6 楼
林心如 [专家分:10] 发布于 2005-04-27 17:10:00
cls
input n
for i=1 to n
if n mod i=0 then s=s+1
next i
if s=2 then ? "shi" else ? "bu shi"
end
7 楼
machel [专家分:0] 发布于 2005-04-28 08:00:00
可以这样吗?
cls
dim n as integer
input n
while n<=2
print "input again":input "n"
wend
flag=1
for i=2 to n-1(或sqr(n))
if n mod i =0 then flag=0 :exit for
next i
if flag then print n,“是素数”else print n,“不是素数”
end
8 楼
dfnhb [专家分:30] 发布于 2005-04-30 10:04:00
flag是一个标志符号,只是作为一个判断是否为素数的标志,在你的程序段中用的循环结构中的条件是我们可能使用的一个因素,我们只要判断是素数然后输出就可以了并不需要考虑其它,因此我们在循环中进行输出,用一个条件判断是否超过输入数的半(n/2)就可以了
9 楼
moz [专家分:37620] 发布于 2005-04-30 13:37:00
我想问问楼主:
你为什么会想不要用它呢?
是它碍眼?没有实际作用是多余的?
我觉得你需要知道的是:
它并不是“不用好像不行”,
只是有存在价值的东西,
不应该被怀疑。明白吗?
INPUT N
'请加语句确保 N 大于2,怎么加楼上都有例子了。
I=2
WHILE N MOD I <>0
I=I+1
WEND
IF I=N THEN PRINT N;"IS A PRIME NUMBER" else PRINT N;"IS NOT PRIME NUMBER"
’很奇怪,你怎么习惯打重复的空格呢?
10 楼
moz [专家分:37620] 发布于 2005-04-30 13:48:00
print "测试一下空格的事情,嘿嘿,占用一下位置"
print "So sorry."
print "Please forgive me."
print "Oh,You are Wellcome."
print "Goodbye!"
print
是真的哎
我来回复