先看一下什麼是素數:素數也叫質數(primer number),是指一個大于1的自然數,除了1和它自身外,不通整除其它自然數的數,符合這種規律的數就叫素數。
素數有無窮多個,那麼在LabVIEW中如何編程實現求解1000以内的所有素數呢?
編程思路求解1000以内的所有素數,這個問題可以分解為下面兩個問題:
對于第一個問題,基本的判斷思路比較簡單:對于一個大于1的正整數x,如果用2到根号下x 之間的所有整數去除,均不能整除,則這樣的x可以判斷為是一個素數。
對于第二個問題,遍曆1000以内的所有大于1的自然數,逐個判斷是否為素數,若是,則統計出來,否則忽略。
下面看一下在LabVIEW中如何編程解決這兩個問題。
如何判斷一個數是否為素數在LabVIEW寫一個子程序,命名為"isPrimeNumber.vi",該子程序輸入一個整數"x",輸出一個布爾值"是素數?",若x是素數,則布爾值為真,反之為假,其框圖程序的實現代碼如下:
在上面代碼中,使用for循環,循環次數為(根号下x)-1,其中,對x開根号後要向下取整并強制轉換為一個32位的整數類型。在for循環内部,從2開始,用"商與餘數.vi"函數逐個去整除x,若餘數為0,則跳出for循環,即for循環結束,在循環結束後,将餘數是否為0的判斷值輸出到循環外,若為0,則說明這個數不是素數,所以對其取反,作為整個子程序的輸出,用來标示當前數是否為素數。
注意,在LabVIEW的for循環中,可以提前結束循環,相當于C語言中的break語句,其方法是,選中for循環框,點擊右鍵,在彈出的右鍵菜單中選擇"條件接線端",即可出現上圖所示的條件結束特符号。通過這種方式,在用2到根号下x 之間的所有整數去除x的時候,隻要出現一個能整除的情況(餘數為0)就說明x不是一個素數,此時就可以跳出結束for循環,沒必要循環完所有的次數。
查找1000以内的所有符合條件的素數編寫一個主程序來調用上面的子程序"isPrimeNumber.vi",查找1000以内所有符合條件的素數,其框圖程序的實現代碼如下:
根據素數的定義,使用for循環查找2-1000以内的所有素數,循環次數為999次,在for循環中添加一個移位寄存器用以存儲所有的素數,其初始值為一個空數組。在循環内部逐個數判斷是否為素數,若是素數,則使用"數組插入.vi"函數添加到移位寄存器的數組中,否則,移位寄存器中的值保留為上次的值。
循環結束後,移位寄存器數組中的值即為1000以内所有符合條件的素數,為方便查看結果,本例中将數組的所有元素使用"數組至電子表格字符串轉換.vi"函數轉換為字符串在前面闆上進行顯示,其顯示結果如下,從圖中可以看出,通過本程序,已經完整的求出了1000以内所有的素數了。
總結
通過這個例子可以學習到的知識點包括:
如果你覺得這篇文章對你有用的話,抖抖小手點個贊吧。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!