2 、 質(zhì)數(shù)求解

  • 題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。

  • 程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除, 則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù).

  • 思路分析:

    • 這里需要進(jìn)行兩個(gè)求解:
      第一個(gè)是求解素?cái)?shù)的個(gè)數(shù),第二個(gè)是打印這些素?cái)?shù)的.
    • (1) 在101-200之間限定了范圍是在101-200之間的數(shù),要判斷在這個(gè)區(qū)間的數(shù),需要判斷這區(qū)間的每一個(gè)數(shù),所以需要遍歷,在計(jì)算機(jī)中,遍歷就是做一個(gè)或多個(gè)for循環(huán)操作
      所以判斷101-200區(qū)間數(shù),就寫為

   for(int i = 101; i <= 200; i += 2)
   {

   }

這里定義一個(gè)變量i,因?yàn)槭菑?01開始的,所以初始值設(shè)置為101,到200,就是小于等于200,因?yàn)槭琴|(zhì)數(shù),每次都是增加2,所以寫作i+=2,就是i=i+2

  • (2)判斷一個(gè)數(shù)是素?cái)?shù),就是數(shù)學(xué)中的質(zhì)數(shù),質(zhì)數(shù)就是除了1和它本身沒有其他因數(shù)的數(shù),舉例5=15,所以5的因數(shù)就是1和5,所以5是素?cái)?shù),而6=23.6=1*6,6的因數(shù)就有1,2,3,6,這就是四個(gè),它就不是素?cái)?shù).

根據(jù)以上描述可得,素?cái)?shù)的數(shù),都是可以跟自己整除的數(shù),所以運(yùn)用取莫運(yùn)算,因?yàn)槿∧\(yùn)算可以得到0和1,0和1可以判斷真假,從而得出是否為質(zhì)數(shù),

可以用101到200之間的數(shù),分別除以一個(gè)數(shù),得1的就是質(zhì)數(shù),得0的就是其他數(shù),這樣一直判斷下去,這樣就又形成一個(gè)判斷區(qū)間,就是多次取莫

因?yàn)樽钚〉馁|(zhì)數(shù)是2,所以從2開始,到根號(hào)200結(jié)束,每次加一

2~√200 區(qū)間(至于為什么是√200,可以百度一下,為什么素?cái)?shù)需要根號(hào)判斷,這是一個(gè)數(shù)學(xué)問題,請(qǐng)問數(shù)學(xué)老師)這里只說,可以提高效率
得到循環(huán)


 for(int j = 2; j <= √200; j++)
 {
     if(i % j == 0)
     {

  • (3)判斷是質(zhì)數(shù),設(shè)置一個(gè)計(jì)數(shù)器命名count=0,隨著每次增加count增加

     if(是質(zhì)數(shù))
     {
         count++;
     }

思路就是如此,我這里用了集合,最后數(shù)值放入一個(gè)集合中顯示,如果還是不清楚,代碼復(fù)制入編譯器,然后run一下.


 @SuppressWarnings( { "unchecked", "rawtypes" })
 public class _002101_200PrimeNumber
 {
     public static void main(String[] args)
     {
         countZhiShu();
     }
     private static void countZhiShu()
     {
         // 計(jì)算變量
         int count = 0;
         // 集合,用來裝所有的素?cái)?shù) 
         Vector v = new Vector();
         for(int i = 101; i <= 200; i += 2)
         {
             // 判斷依據(jù)
             boolean b = false;
             for(int j = 2; j < Math.sqrt(i); j++)
             {
                 // 求余數(shù)是否為0  
                 if(i % j == 0)
                 {
                     // 如果為0, 將標(biāo)簽設(shè)置為false    
                     b = false;
                     // 可以整除就跳出這個(gè)循環(huán)                
                     break;
                 }
                 else
                 {
                     b = true;
                 }
             }
             if(b == true)
             {
                 //  素?cái)?shù)個(gè)數(shù)加1  
                 count++;
                 // 將符合要求的i加到集合里 
                 v.add(i);
             }
         }
         System.out.println("100到200中間有 " + count + " 個(gè)素?cái)?shù)");
         System.out.println("素?cái)?shù)為:\n" + v);
     }
 }


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容