素數/質數的判斷(C++)


思路:判斷一個整數n是否為素數,只需用2到n-1之間的每一個整數去除,如果都不能被整除,那么m就是一個素數。

判斷定理:“n不能夠被不大於根號n的任何素數整除,則n是一個素數”

用代買表示如下:

int is_prime = trure;

int i = 2;

while (i <= (sqrt(n)))  // 當i小於n的平方根時

{            

   if (n % i  == 0)  // 如果i處以n等於0,

    is_prime == false;  // i不是素數

  i++;        // 把i加1

}

完整代碼:

 1 #include <iostream>
 2 #include <cmath>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int n;    // Number to test for prime-ness
 9     int i;    // Loop counter
10     int is_prime = true;    // Boolean flag...
11                             // Assume true for now.
12 
13     // Get a number from the keyboard.
14 
15     cout << "Enter a number and press ENTER: ";
16     cin >> n;
17 
18     // Test for prime by checking for divisibility
19     // by all whole numbers from 2 to sqrt(n).
20 
21     i = 2;
22     while (i <= sqrt(n))    // While i is <=  sqrt(n).
23     {
24         if (n % i == 0)        // If i divides n,
25             is_prime = false; // n is not prime
26         i++;                // add 1 to i.
27     }
28 
29     // print results
30     if (i <= sqrt(n))
31         cout << "Number is prime." << endl;
32     else 
33         cout << "Number is not prime." << endl;
34 
35     return 0;
36 }
View Code

 優化:

  這個程序可以在找到第一個余數為0的數之后,即使推出循環,而不是繼續循環下去,那只會浪費CPU資源。

 

int is_prime = trure;

int i = 2;

while (i <= (sqrt(n)))  // 當i小於n的平方根時

{            

   if (n % i  == 0)  // 如果i處以n等於0,

  {

    is_prime == false;  // i不是素數

    break;        // 不是素數,立即結束循環。

  }

  i++;        // 把i加1

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM