iT邦幫忙

0

T-SQL 找質數的問題

為什麼
@dividor int = 2
@n % @dividor = 0
那15 % 2 餘數不是0
但15可以被3被5整除
所以不是質數
但這樣的寫法為什麼可以除了2以外的數值

declare @n int = 15
declare @dividor int = 2
declare @isPrime int = 1   -- 假設它是質數
while @dividor < @n and @isPrime = 1
  begin
    if @n % @dividor = 0
		begin
		   set @isPrime = 0
		end
    set @dividor = @dividor + 1
  end
print @isPrime
go

程式會從 2 開始試到 n-1
如果都不能被整除,表示是質數
以5為例
while 迴圈
第一次: 5 % 2 != 0
第二次: 5 % 3 != 0
第三次: 5 % 4 != 0
@dividor 等於 5 時,因為等於 @n 所以離開迴圈
@isPrime = 1

如果中間有被整除
@isPrime 被設為 0 離開迴圈
把迴圈過程列印出來就知道為什麼吧~
阿偉 iT邦新手 2 級 ‧ 2019-01-03 15:44:45 檢舉
感謝 了解了!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答