如何判别一个数是质数?

cdyweeks 2006-11-01 11:00:27
DECLARE @N INT,@M INT,@K INT

SET @N=14
SET @K=2

WHILE @K<=(@N-1)
BEGIN
SET @M=@N%@K
IF @M=0
SELECT 质数=NULL,不是质数='√'
BREAK
IF @M!=0
SET @K=@K+1
END
SELECT 质数='√',不是质数=NULL
这是我写的,但是有问题,因为如果不是质数的时候,比如说@N=20的时候,他不仅会输出第一个SELECT,最后一个也会输出,是质数的话就不会出现问题。哪位大虾能够帮我解决一下。谢谢
...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hllmh 2006-11-02
  • 打赏
  • 举报
回复
DECLARE @N INT,@M INT,@K INT

SET @N=3
SET @K=2

WHILE @K<=(@N-1)
BEGIN
SET @M=@N%@K
IF @M=0
BREAK
ELSE
SET @K=@K+1
END
IF @M=0
SELECT 质数=NULL,不是质数='√'
Else
SELECT 质数='√',不是质数=NULL
这样也可以
hllmh 2006-11-02
  • 打赏
  • 举报
回复
DECLARE @N INT,@M INT,@K INT

SET @N=14
SET @K=2

WHILE @K<=(@N-1)
BEGIN
SET @M=@N%@K
IF @M=0
BEGIN
SELECT 质数=NULL,不是质数='√'
BREAK
END
ELSE
SET @K=@K+1
END
if @M!=0
SELECT 质数='√',不是质数=NULL
这样写就没问题了
EmeraldSword 2006-11-02
  • 打赏
  • 举报
回复
DECLARE @N INT,@M INT,@K INT

SET @N=99
SET @K=2

WHILE @K<=(@N-1)
BEGIN
SET @M=@N%@K
IF @M=0
BEGIN
SELECT 质数=NULL,不是质数='√'
BREAK
END
ELSE IF @K=@N-1
BEGIN
SELECT 质数='√',不是质数=NULL
END
SET @K=@K+1
END
cdyweeks 2006-11-02
  • 打赏
  • 举报
回复
小狼你第一个好像有点不对哦
1,2都不能判别出来哦?
第二个应该没有什么问题
cdyweeks 2006-11-02
  • 打赏
  • 举报
回复
嗯,谢谢各位大虾的帮助,不过昨天晚上我睡觉的时候,想到了
和小狼的差不多,
DECLARE @N INT,@M INT,@K INT

SET @N=8
SET @K=2

WHILE @K<=(@N-1)
BEGIN
SET @M=@N%@K
IF @M=0
BREAK
SET @K=@K+1
END

IF @K>=(@N-1)
SELECT 质数='√',不是质数=NULL
ELSE
SELECT 质数=NULL,不是质数='√'
Well 2006-11-02
  • 打赏
  • 举报
回复
IF @M!=0
SET @K=@K+1
END
SELECT 质数='√',不是质数=NULL
这个写法有问题,仔细看看。。
hhhdyj 2006-11-02
  • 打赏
  • 举报
回复
CREATE function t(@a int)
returns int
as
begin
declare @r int
declare @i int
if @a > 2
begin
if @a % 2 =0
set @r = 0
else
begin
set @i = 3
while @i < sqrt(@a) and @a % @i <>0
begin
set @i = @i + 2
end
if @i > sqrt(@a) set @r = 1 else set @r = 0
end
end
else
set @r = 1
return @r
end



34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧