赞
踩
判断一个数是不是质数 , 其实很简单. 只要把 2 ~ n 中的所有数都除一遍就行了.
按常规思路, 需要一个循环遍历 2 ~ n 二到 n 之间的所有数. 那么, 可不可以再优化呢?
事实上是可以的. 我们都知道, 判断一个数是不是质数 其实只需要 遍历2 ~ n的开方就行 了.
完整程序如下( 代码的详细解释在后面 ) :
- #include <iostream>
-
- #include <cmath>
-
- using namespace std;
-
- bool judge_prime( int number )
- {
- int i;
-
- bool judge;
-
- judge = true;
-
- if( number <= 2 )
- {
- if( number < 2 )
- {
- judge = false;
-
- return judge;
- }
-
- else
- {
- return judge;
- }
- }
-
- for( i = 2; i <= sqrt( ( double )number ); i++ )
- {
- if( number % i == 0 )
- {
- judge = false;
-
- return judge;
- }
- }
-
- return judge;
- }
-
- int main()
- {
- int number;
-
- bool judge;
-
- while( true )
- {
- cout << "请输入你要判断的数 : ";
-
- cin >> number;
-
- cout << endl;
-
- judge = judge_prime( number );
-
- if( judge )
- {
- cout << number << ' ';
-
- cout << "是质数";
- }
-
- else
- {
- cout << number << ' ';
-
- cout << "不是质数";
- }
-
- cout << endl;
-
- cout << endl;
- }
- }
首先引入头文件 :
这里要说一下 <cmath> 它是c++数学库 我们用它里面提供的 ' sqrt ' 函数来求开方.
- #include <iostream>
-
- #include <cmath>
然后是命名空间 :
using namespace std;
接下来是核心代码 :
为了使程序更加清晰明了( 另一方面是个人喜好 ), 所以做成了函数 " judge_number "
首先是定义循环变量i, 接着定义 bool 变量 judge 来判断 这个数是不是质数. 因为一个数只有是质 数和不是质数两种情况, 尔 bool 变量 也只有 真 true 或 假 false 两种情况, 所以更合适.
- bool judge_prime( int number )
- {
- int i;
-
- bool judge;
-
- judge = true;
接下来判断 number 是不是小于二的 因为循环是从 2 开始的, 所以 2 可能考虑不到 :
- if( number <= 2 )
- {
- if( number < 2 )
- {
- judge = false;
-
- return judge;
- }
-
- else
- {
- return judge;
- }
- }
接下来是 for 语句循环, 最后返回结果 :
-
- for( i = 2; i <= sqrt( ( double )number ); i++ )
- {
- if( number % i == 0 )
- {
- judge = false;
-
- return judge;
- }
- }
-
- return judge;
- }
然后是主函数 :
首先是定义变量 number 和 judge
- int main()
- {
- int number;
-
- bool judge;
然后进入while 循环 :
当为真时, 则执行循环. 由于一直为真, 所以循环被不断执行. 从而解决了多次输入的问题.
这里要注意一下 判断一个 bool 型变量 是否为真 只需要在括号里写上 if( bool 型变量 ). ( 这里以 if 语句为例, 最终要以实际情况为准 ). 那如果为 false 呢? 对了, 只需要在 bool变量 前 加一个 ' ! ' 就行了, 也就是这样 if( !bool 型变量 ).
-
- while( true )
- {
-
- cout << "请输入你要判断的数 : ";
-
- cin >> number;
-
- cout << endl;
-
- judge = judge_prime( number );
-
- if( judge )
- {
- cout << number << ' ';
-
- cout << "是质数";
- }
-
- else
- {
- cout << number << ' ';
-
- cout << "不是质数";
- }
-
- cout << endl;
-
- cout << endl;
- }
-
- }
程序实验截图 :
如果程序或代码块有什么不足的地方 请各位大佬们海涵 欢迎在评论区下方留言 ( ^ _ ^ ).
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。