标题:[求助]请教求素数的程序存在的问题
只看楼主
悠悠小鹿
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-1
 问题点数:0 回复次数:4 
[求助]请教求素数的程序存在的问题
请教高手有关求100以内素数的问题,可以运行,但是看不到结果,不知道是什么问题,请各位高手指点一下!

create procedure prime
as
declare @m int
declare @k int
declare @i int
while(@m<=100)
begin
select @m=1
select @m=@m+2
select @k=sqrt(@m)
end
while(@i<=@k)
begin
select @i=2
select @i=@i+1
if(@m%@i=0) break
if(@i>=@k+1)
print @m
end

[此贴子已经被作者于2006-4-1 19:18:14编辑过]

搜索更多相关主题的帖子: 素数 
2006-04-01 19:17
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
2个问题点
第一,变量宣言没有问题,但是给变量赋值的语句位置不对,第一个While的地方就会跳出(@m的值此时为Null,不能比较),当然不会得到结果。

第二,While语句的嵌套有问题,应该将2个While语句套在一起,而不是按顺序连接起来,这样的话只能得到大于100的第一个素数(101)

2006-04-01 22:22
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 

调整了一下句顺,不过这样的话101也会选出

declare @m int
declare @k int
declare @i int
select @m=1
while(@m<=100)
begin

select @m=@m+2
select @k=sqrt(@m)
select @i=2
while(@i<=@k)
begin
select @i=@i+1
if(@m%@i=0) break
if(@i>=@k+1)
print @m
end

end


2006-04-01 22:24
悠悠小鹿
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-4-1
得分:0 
可是这样的话只能显示5之后的素数
2006-04-01 23:15
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
select @m=1
while(@m<=100)
begin

select @m=@m+2
select @k=sqrt(@m)
select @i=2
while(@i<=@k)

这是你自己写的这段话的问题了。

上来就把4以下的数字给剔除了。

2006-04-01 23:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-54438-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.244833 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved