這篇文章主要介紹“如何利用C#計算素數(shù)序列”,在日常操作中,相信很多人在如何利用C#計算素數(shù)序列問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何利用C#計算素數(shù)序列”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)是專業(yè)的石林網(wǎng)站建設公司,石林接單;提供成都網(wǎng)站設計、成都網(wǎng)站制作,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行石林網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
學習C#語言時,經常會遇到C#計算素數(shù)序列問題,這里將介紹C#計算素數(shù)序列問題的解決方法。
素數(shù)尋找問題由來已久,一直是一些數(shù)學家追求的目的。關于素數(shù)的定義及性質,我就不在這里多敘了,相信大家都對此了如指掌。素數(shù)的尋找思路比較的簡單,根據(jù)素數(shù)的性質(素數(shù)應該不能被除了1和它自身的其他數(shù)整除)我們可以從最小的素數(shù)2開始,一直到比它小1的數(shù)為止,用這些數(shù)去整除它,如果它能被整除則它必定不是素數(shù),這是判斷單個素數(shù)的方法(這個算法思想最簡單,時間復雜度***)。對于尋找比某一個給定的整數(shù)值小的所有素數(shù)也可以采用這種方法,不過我們會發(fā)現(xiàn),采用這種單個判斷的方法所耗的時間比較多。比如查找不大于10的素數(shù),我們必須從2開始一個個判斷,共需判斷9個數(shù),事實上按照我們后面講述的方法,只需循環(huán)2次就可以了。因此,下面的兩種方法都將基于刪除法來做。
我們來看看刪除法的思想:
1.將小于給定整數(shù)值n的所有正整數(shù)加到一個數(shù)組中;
2.刪除能夠被一些整數(shù)整除的數(shù);
3.數(shù)組中遺留的元素就是***C#計算素數(shù)序列。
class prime { public static int[] PrimeList; publicstatic void FindPrime(int n) { int[] IntList; IntList=new int[n]; for (int p=2;p<=n;p++) IntList[p-1]=p; for (int p=2;p這這個算法中,刪除的數(shù)是那些被從2開始直到n的平方根的整數(shù)整除的數(shù)。這個算法比起前面介紹的單個素數(shù)的尋找方法要好,它的循環(huán)次數(shù)減少了一多半,但是這個算法還不是最理想的:
1.例如,6既能被2整除,也能被3整除,那么當p=2時,6被刪掉了一次;當p=3時,6又被刪除了一次,雖然按照我們設定的算法規(guī)則,這不會導致沖突(通過判斷IntList數(shù)組元素是否為0,若為0就不必重復刪除),但是這會使得算法的效率低下。
2.還有C#計算素數(shù)序列元素個數(shù)時,我們也走了彎路。***步,我們先計算出了數(shù)組元素大小,第二步才開始賦值,事實上這兩步我們可以減去計算數(shù)組大小這一步,可以把它放在前面完成。
3.已經被刪除了的元素,也就是那些不是素數(shù)的元素,可以不用拿他們去整除整數(shù),例如4不用拿去整除8,因為能被4整除的數(shù)肯定能被2整除,已經在前面循環(huán)中被刪除了。
基于上述考慮,我們得到了一個效率更加高的算法:
class primegood { public static int[] PrimeList; public static void FindPrime(int n) { int[] IntList; int len=n-1; IntList=new int[n]; for (int p=2;p<=n;p++) IntList[p-1]=p; for (int p=2;p到此,關于“如何利用C#計算素數(shù)序列”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
分享文章:如何利用C#計算素數(shù)序列
分享路徑:http://weahome.cn/article/jsjsig.html