当前位置:首页 » 编程语言 » sql求素数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql求素数

发布时间: 2023-05-08 02:47:49

A. 用sql怎么计算1-1000以内所有质数之和。

declare @num int --数值以内的质数和declare @sum int --质数和set @num = 1000 --100以内的指数和set @sum =0 --质数总和if @num % 2 =0 --如果是偶数转为奇数进行运算 与下面的减2相对称begin set @num = @num -1 --如果是偶数就变为奇数endwhile @num >= 3 --2比较特殊 2即是奇数又是偶数 begin declare @i int --变量 declare @sqltNum int --对循环的数值开根号得到的数 declare @val int --变量 替换@num set @i = 2 --设置变量值 set @val = @num --赋值 set @sqltNum =SQRT(@num) --对传入的数字开根号 while @i<=@sqltNum begin if @num % @i = 0 begin set @val=0 break end else begin set @i+=1 continue end end set @sum = @sum+@val set @num = @num -2 --质数都是奇数 end select (@sum+2) --2比较特殊 2即是奇数又是偶数,+2是因为是从3开始计算的

B. 用 oracle中PL/SQL算法 求100内的素数

本过程输入参数inp,计算1到inp之间的素数

算法:
拿出1-inp之间森衫的每个数i,用2到i的平方根之间的每个数去数拿除,全部除不尽的即为素数,有一个能除尽的为非素数此毕腔

set serverout on
create or replace procere is_prime(inp number)
as
i number;
j number;
is_prim boolean;
begin
dbms_output.new_line;
dbms_output.put(to_char(2)||' ');
for i in 3..inp loop
begin
is_prim:=true;
for j in 2..trunc(sqrt(i)) loop
if mod(i,j)=0 then
begin
is_prim:=false;
exit;
end;
end if;
end loop;
if is_prim then dbms_output.put(to_char(i)||' '); end if;
end;
end loop;
dbms_output.new_line;
end;
/

exec is_prime(100)

C. 用SQL判断1050是否是素数

setserveroutputon
DECLARE
BEGIN
FORiIN2..1049
LOOP
IFmod(1050,i)=0THEN
dbms_output.put_line(1050||'不是素数');
return;
ENDIF;
ENDLOOP;
dbms_output.put_line(1050||'是素数');
END;

D. 用SQL求100以内的素数

曾经在哪里见到过(忘记了),保存了下来,刚刚测试了一下完全正确
贴出来供你参考吧,如下:
declare @a int,@b int,@i int
set @i=1
while @i<100
begin
set @a=2
set @b=0
while @a<=@i/2
begin
if @i % @a=0
begin
set @b=1
break
end
set @a=@a+1
end
if @b=0 print @i
end

E. 如何用sql求1-100的素数

declare @input int
set @input = 100 -- 求100以内的素数
select A.number from master..spt_values A
where type='p' and number between 2 and @input
and not exists(select 1 from master..spt_values B
where B.type='p'
and B.number between 2 and sqrt(A.number)
and A.number % B.number =0
)
order by A.number

F. 用T-sQL语句求出1到100的素数

declare @num int,@flag int,@i int
set @num=1
while @num<=100
begin
set @flag=1 --flag=1 素数,flag=0 非素数
set @i=2
while @i<@num
begin
if @num%@i=0
begin
set @flag=0
break
end
set @i=@i+1
end
if @flag=1 and @num >2 --去掉1,2
print @num
set @num=@num+1
end

G. 在SQL SERVER 2005中 如何判断一个数是素数

Hi我,我来回答吧:
先建立个判断函数,然后执行该函数,具体如下:

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

declare @maxV2 int,@Index2 int
set @maxV2 = @maxV
set @Index2 = @Index

while @Index < @maxV
begin
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表示非素数。

H. 使用SQL编写程序,输出100以内所有的素数


05以后可以这样写

withtemp1(col1)as
(select1col1
unionall
selectcol1+2col1
fromtemp1
wherecol1+2<=100
)
selectsum(col1)fromtemp1;

没测试,有问题你再追问吧,

***************************好吧,忘记素数是什么了,,写成了1,3,5,7这样的和了,,,

selectsum(a.number)
frommaster..spt_valuesa
wherea.numberbetween2and100anda.type='p'
andnotexists(select*frommaster..spt_valuesb
whereb.numberbetween2and100andb.type='p'
anda.number>b.number
anda.number%b.number=0)



I. 输出由1,2,3,4,5,6组成的所有两位数。4.找出100以内所有素数,sql

第一个问题比较简单,如果数字多,可以用动态SQL将数字写入一个临时表,最后join出来,这个数字少,实现方法如下:

selectA+Bfrom
(select'1'Aunionselect'2'培棚unionselect'3'union
select'4'unionselect'5'unionselect'6')a
crossjoin
(select'1'asBunionselect'2'unionselect'3'union
select'4'unionselect'5'unionselect'6')b

第二个问题需要使用动态SQL进行处理,代码如下:

declare@iint,@jint,@rint
set@i=2
while@i<100
begin
set@j=1--循环初始值
set@r=1--判定标识
while@j<@i
--如果找到除了1和它本配行则身之外的能整除的数字(取余数等于带嫌0),则标志判定标识为否
begin
if@i%@j=0and@i<>@jand@j<>1
begin
set@r=0
break
end
set@j=@j+1
end
--若判定标识为正确,则打印数字
if@r=1print@i
--循环数+1
set@i=@i+1
end