当前位置:   article > 正文

C++ 判断质数 ( 可重复输入 )_c++质数判断代码

c++质数判断代码

C++ 判断质数

        判断一个数是不是质数 , 其实很简单. 只要把 2 ~ n 中的所有数都除一遍就行了.

        按常规思路, 需要一个循环遍历 2 ~ n 二到 n 之间的所有数. 那么, 可不可以再优化呢?

        事实上是可以的. 我们都知道, 判断一个数是不是质数 其实只需要 遍历2 ~ n的开方就行 了.

        完整程序如下( 代码的详细解释在后面 ) :

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. bool judge_prime( int number )
  5. {
  6. int i;
  7. bool judge;
  8. judge = true;
  9. if( number <= 2 )
  10. {
  11. if( number < 2 )
  12. {
  13. judge = false;
  14. return judge;
  15. }
  16. else
  17. {
  18. return judge;
  19. }
  20. }
  21. for( i = 2; i <= sqrt( ( double )number ); i++ )
  22. {
  23. if( number % i == 0 )
  24. {
  25. judge = false;
  26. return judge;
  27. }
  28. }
  29. return judge;
  30. }
  31. int main()
  32. {
  33. int number;
  34. bool judge;
  35. while( true )
  36. {
  37. cout << "请输入你要判断的数 : ";
  38. cin >> number;
  39. cout << endl;
  40. judge = judge_prime( number );
  41. if( judge )
  42. {
  43. cout << number << ' ';
  44. cout << "是质数";
  45. }
  46. else
  47. {
  48. cout << number << ' ';
  49. cout << "不是质数";
  50. }
  51. cout << endl;
  52. cout << endl;
  53. }
  54. }

   首先引入头文件 :

   这里要说一下 <cmath> 它是c++数学库 我们用它里面提供的 ' sqrt ' 函数来求开方.

  1. #include <iostream>
  2. #include <cmath>

    然后是命名空间 : 

using namespace std;

  接下来是核心代码 :

  为了使程序更加清晰明了( 另一方面是个人喜好 ), 所以做成了函数 " judge_number " 

  首先是定义循环变量i, 接着定义 bool 变量 judge 来判断 这个数是不是质数. 因为一个数只有是质    数和不是质数两种情况, 尔 bool 变量 也只有 真 true 或 假 false 两种情况, 所以更合适.

  1. bool judge_prime( int number )
  2. {
  3. int i;
  4. bool judge;
  5. judge = true;

 接下来判断 number 是不是小于二的 因为循环是从 2 开始的, 所以 2 可能考虑不到 :

  1. if( number <= 2 )
  2. {
  3. if( number < 2 )
  4. {
  5. judge = false;
  6. return judge;
  7. }
  8. else
  9. {
  10. return judge;
  11. }
  12. }

 接下来是 for 语句循环, 最后返回结果 :

  1. for( i = 2; i <= sqrt( ( double )number ); i++ )
  2. {
  3. if( number % i == 0 )
  4. {
  5. judge = false;
  6. return judge;
  7. }
  8. }
  9. return judge;
  10. }

然后是主函数 :

首先是定义变量 number 和 judge

  1. int main()
  2. {
  3. int number;
  4. bool judge;

然后进入while 循环 :

当为真时, 则执行循环. 由于一直为真, 所以循环被不断执行. 从而解决了多次输入的问题.

这里要注意一下 判断一个 bool 型变量 是否为真 只需要在括号里写上 if( bool 型变量 ). ( 这里以 if 语句为例, 最终要以实际情况为准 ). 那如果为 false 呢? 对了, 只需要在 bool变量 前 加一个 ' ! ' 就行了, 也就是这样 if( !bool 型变量 ).

  1. while( true )
  2. {
  3. cout << "请输入你要判断的数 : ";
  4. cin >> number;
  5. cout << endl;
  6. judge = judge_prime( number );
  7. if( judge )
  8. {
  9. cout << number << ' ';
  10. cout << "是质数";
  11. }
  12. else
  13. {
  14. cout << number << ' ';
  15. cout << "不是质数";
  16. }
  17. cout << endl;
  18. cout << endl;
  19. }
  20. ​}

程序实验截图 :

如果程序或代码块有什么不足的地方 请各位大佬们海涵 欢迎在评论区下方留言 ( ^ _ ^ ).

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/75346
推荐阅读
相关标签
  

闽ICP备14008679号