sql判断一个数是否为素数
答案:2 悬赏:0 手机版
解决时间 2021-02-23 03:19
- 提问者网友:轮囘Li巡影
- 2021-02-22 22:15
素数是能被1和它本身整除的大于1的自然数
最佳答案
- 五星知识达人网友:蓝房子
- 2021-02-22 23:48
我来回答吧:
先建立个判断函数,然后执行该函数,具体如下:
create function ChkIntIsSuShu(@No int)
returns tinyint
as
begin
if @No <=1
return 0
declare @maxV int, @Index int
set @maxV = @No -1
set @Index = 2
while @Index < @maxV
begin
declare @maxV2 int,@Index2 int
set @maxV2 = @maxV
set @Index2 = @Index
while @Index2 < @maxV2
begin
if @Index2 * @Index = @No
return 0
set @Index2 = @Index2 + 1
end
set @Index = @Index + 1
end
return 1
end
select dbo.ChkIntIsSuShu(13) -- 返回值1,表示素数,0表示非素数。
先建立个判断函数,然后执行该函数,具体如下:
create function ChkIntIsSuShu(@No int)
returns tinyint
as
begin
if @No <=1
return 0
declare @maxV int, @Index int
set @maxV = @No -1
set @Index = 2
while @Index < @maxV
begin
declare @maxV2 int,@Index2 int
set @maxV2 = @maxV
set @Index2 = @Index
while @Index2 < @maxV2
begin
if @Index2 * @Index = @No
return 0
set @Index2 = @Index2 + 1
end
set @Index = @Index + 1
end
return 1
end
select dbo.ChkIntIsSuShu(13) -- 返回值1,表示素数,0表示非素数。
全部回答
- 1楼网友:雾月
- 2021-02-23 00:50
肯定不是了 能被2整除啊
指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
判断n是否为素数
1、最简单的方法
用n除以2-sqrt(n),有一个能除尽就不是素数,否则是素数。
时间复杂度:o(sqrt(n))
2、素数判断法:
这种方法是对上面方法的改进,上面方法是对2-sqrt(n)之间的数进行判断是否能除尽,而因为有如下算术基本定理,可以减少判断量。
算术基本定理:又称为素数的唯一分解定理,即:每个大于1的自然数均可写为素数的积,而且这些素因子按大小排列之后,写法仅有一种方式。例如:6936 = 2^3×3×17^2,1200 = 2^4×3×5^2。
由算术基本定理知,任何合数都可分解为一些素数的乘积,所以判断一个数能不能被2-sqrt(n)之间的素数整除即可。但是必须知道2-sqrt(n)之间的所有素数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯