91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用C#計算素數序列

發布時間:2021-06-16 14:56:58 來源:億速云 閱讀:224 作者:chen 欄目:編程語言

這篇文章主要介紹“如何利用C#計算素數序列”,在日常操作中,相信很多人在如何利用C#計算素數序列問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何利用C#計算素數序列”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

學習C#語言時,經常會遇到C#計算素數序列問題,這里將介紹C#計算素數序列問題的解決方法。

素數尋找問題由來已久,一直是一些數學家追求的目的。關于素數的定義及性質,我就不在這里多敘了,相信大家都對此了如指掌。素數的尋找思路比較的簡單,根據素數的性質(素數應該不能被除了1和它自身的其他數整除)我們可以從最小的素數2開始,一直到比它小1的數為止,用這些數去整除它,如果它能被整除則它必定不是素數,這是判斷單個素數的方法(這個算法思想最簡單,時間復雜度***)。對于尋找比某一個給定的整數值小的所有素數也可以采用這種方法,不過我們會發現,采用這種單個判斷的方法所耗的時間比較多。比如查找不大于10的素數,我們必須從2開始一個個判斷,共需判斷9個數,事實上按照我們后面講述的方法,只需循環2次就可以了。因此,下面的兩種方法都將基于刪除法來做。

我們來看看刪除法的思想:

1.將小于給定整數值n的所有正整數加到一個數組中;

2.刪除能夠被一些整數整除的數;

3.數組中遺留的元素就是***C#計算素數序列。

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<Math.Sqrt(n);p++)  {  int j=p+1;  while (j<=n)  {  if ((IntList[j-1]!=0 ) && ((IntList[j-1]% p)==0) ) IntList[j-1]=0;  jj=j+1;  }  }  int i=0;  for (int p=2;p<=n;p++)  {  if (IntList[p-1]!=0) ii=i+1;  }  PrimeList=new int[i];  i=0;  for (int p=2;p<=n;p++)  {  if (IntList[p-1]!=0)  {  PrimeList[i]=IntList[p-1];  ii=i+1;  }  }  }  }

這這個算法中,刪除的數是那些被從2開始直到n的平方根的整數整除的數。這個算法比起前面介紹的單個素數的尋找方法要好,它的循環次數減少了一多半,但是這個算法還不是最理想的:

1.例如,6既能被2整除,也能被3整除,那么當p=2時,6被刪掉了一次;當p=3時,6又被刪除了一次,雖然按照我們設定的算法規則,這不會導致沖突(通過判斷IntList數組元素是否為0,若為0就不必重復刪除),但是這會使得算法的效率低下。

2.還有C#計算素數序列元素個數時,我們也走了彎路。***步,我們先計算出了數組元素大小,第二步才開始賦值,事實上這兩步我們可以減去計算數組大小這一步,可以把它放在前面完成。

3.已經被刪除了的元素,也就是那些不是素數的元素,可以不用拿他們去整除整數,例如4不用拿去整除8,因為能被4整除的數肯定能被2整除,已經在前面循環中被刪除了。

基于上述考慮,我們得到了一個效率更加高的算法:

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<Math.Sqrt(n);p++)  {  if (IntList[p-1]==0) continue;  int j=p*p;  while (j<=n)  {  if (IntList[j-1]!=0 )  {  IntList[j-1]=0;  lenlen=len-1;  }  jj=j+p;  }  }  PrimeList=new int[len];  int i=0;  for (int p=2;p<=n;p++)  {  if (IntList[p-1]!=0)  {  PrimeList[i]=IntList[p-1];  ii=i+1;  }  }  }  }

到此,關于“如何利用C#計算素數序列”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

威远县| 乌兰浩特市| 通榆县| 綦江县| 阿图什市| 寻甸| 泽库县| 新丰县| 郧西县| 双鸭山市| 长泰县| 新沂市| 扎赉特旗| 九龙城区| 饶平县| 务川| 定南县| 班玛县| 中牟县| 霸州市| 揭阳市| 南郑县| 台州市| 田林县| 塔城市| 额济纳旗| 云阳县| 苍溪县| 拜城县| 武安市| 闵行区| 东阿县| 博爱县| 滕州市| 钟祥市| 青浦区| 循化| 普兰县| 象州县| 浦江县| 个旧市|