A. 用sql語句編寫程序:求2~50內的素數
declare @a int,@b int,@i int
set @i=2
while @i<50
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 --@b
set @i=@i+1
end
B. SQL怎麼判斷查奇偶數
首先第一句話:雖然我不知到這兩個數是什麽,但我知道你一定也不知道。 從這句話說明孫手裡拿到的兩個數肯定都不是素數(什麼是素數?就是除了1和它本身以外不再有其他因數的自然數),不然的話,孫通過知道龐的和就可以唯一判斷出這兩個數字了
推理一:比如A=a+b,B=a*b;B=15,A=8,那麼很容易就猜想到了a=3,b=5 (因為對15進行拆分只有一種可能),所以對龐的第一句話產生了矛盾;那麼a,b兩個數可能是一個奇數,一個偶數;另外有位大神認為任意大於4的偶數都能被拆成兩個奇質數之和,但由於兩個質數都要小於99,所以龐手上的數可能為偶數,但這個偶數會接近200(有182,184,188,190,192,196和198),除此之外,只可能是奇數;舉例:如果龐涓手上是28,可以拆成11+17,當孫臏拿到了187這個積,馬上就可以猜出鬼穀子給他的兩個數是11和17,與龐涓肯定孫臏不知道這兩個數相矛盾,因此有可能拆成兩個2-99的質數和的數都要排除因此有可能拆成兩個2-99的質數和的數都要排除
推理二:龐的和數一定不是大於55的數。因為大於53的數始終能夠拆成質數53和另一個大於2的數,在2-99的限制下,這兩個數的乘積只有這唯一一種拆分方法。舉例:如果龐手上的和數是57,可以拆成53+4,當孫臏拿到212這個積,只有4*53這一種拆分可能性,因為2*106的另一種拆分方法導致有一個數超過99。由此排除55以上的所有所有數因此最後滿足以上條件的這樣的數字僅有11個:11,17,23,27,29,35,37,41,47,51,53。
第二句話:本來我不知道,現在知道了;這說明孫看了自己手上的積後,分解因式對應的所有拆分情況中有且僅有一種,兩個因數的和是以上11個數中的一個。
第三句話:那我也知道了;由於龐涓並不知道兩數積,所以只能從以上表格出發確定,最後得到兩個數字分別是4和13
也許上面的解析並不通俗易懂,其中涉及到很多數學知識和推理能力,如果感興趣可以基於上述講解自行進行推導;其實這道題的本質是基於每次的問題進行排除,盡可能的縮小范圍,最後得到結果;那麼最後通過SQL的方式來解決這類問題,或許通過sql(基於HQL)的方式可以幫助讀者更加清晰理解
C. 在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表示非素數。
D. 編寫一個C語言程序判斷一個數是否是素數
目的:判斷一個數是否為素數
#include<stdio.h>
intmain(void)
{
int m;
inti;
scanf("%d",&m);
for(i=2;i< m;i++) //2到(m-1)的數去除m
{
if(m%i==0)//判斷能否整除
break;
}
if(i== m)
printf("YES!
");
else
printf("No!
");
}
for循環的功能:
①若能整除,通過break跳出函數;
②若一直到m-1都不能整除,此時i再自增1到m,不滿足i< m跳出for循環,這時i= m。
(4)sql編寫代碼判斷a是不是素數擴展閱讀:
素數定理:
1、在一個大於1的數a和它的2倍之間(即區間(a,2a]中)必存在至少一個素數。
2、存在任意長度的素數等差數列。
3、一個偶數可以寫成兩個合數之和,其中每一個合數都最多隻有9個質因數。(挪威數學家布朗,1920年)。
4、一個偶數必定可以寫成一個質數加上一個合成數,其中合數的因子個數有上界。(瑞尼,1948年)。
5、一個偶數必定可以寫成一個質數加上一個最多由5個因子所組成的合成數。後來,有人簡稱這結果為(1+5)(中國潘承洞,1968年)。
6、一個充分大偶數必定可以寫成一個素數加上一個最多由2個質因子所組成的合成數。簡稱為(1+2)。
E. 用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;