您的位置:首页 > 编程语言 > C语言/C++

素数/质数的判断(C++)

2012-04-26 12:27 417 查看
思路:判断一个整数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

}

完整代码:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
int n;    // Number to test for prime-ness
int i;    // Loop counter
int is_prime = true;    // Boolean flag...
// Assume true for now.

// Get a number from the keyboard.

cout << "Enter a number and press ENTER: ";
cin >> n;

// Test for prime by checking for divisibility
// by all whole numbers from 2 to sqrt(n).

i = 2;
while (i <= sqrt(n))    // While i is <=  sqrt(n).
{
if (n % i == 0)        // If i divides n,
is_prime = false; // n is not prime
i++;                // add 1 to i.
}

// print results
if (i <= sqrt(n))
cout << "Number is prime." << endl;
else
cout << "Number is not prime." << endl;

return 0;
}


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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: