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