题目的主要信息:
- 输入一个大于1的数,判断其是否是质数
具体做法:
判断一个数是否是质数,我们只需要找它有无因子即能否被整除即可。 从2开始遍历到该数前一个数,查看每个数能否整除,如果可以整除即余数为0,则记录下不是质数,跳出循环,输出即可,如果检查完所有的数都没有因子,则它是质数。
其实我们不用遍历到,遍历到即可,因为后面如果有因子,必定是乘上另一个小于的数字,那我们前面就已经验证过了,因此以为遍历终点就可以了。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
bool flag = true;
for(int i = 2; i * i <= n; i++){ //遍历到根号n就可以了
if(n % i == 0){ //可以整除,记录不是质数
flag = false;
break;
}
}
if(flag)
cout << "是质数" << endl;
else
cout << "不是质数" << endl;
return 0;
}
复杂度分析:
- 时间复杂度:,从2遍历到
- 空间复杂度:,无额外空间