• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

思路:判断一个整数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

}

}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C/C++时间转换与表示发布时间:2022-07-13
下一篇:
C#(前台调用后台方法,后台调用前台方法)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap