7-5 【知识点 break和 continue】 判断一个整数是否为素数 分数 10 作者 颜晖 单位 浙大城市学院 本题要求编写程序,判断一个给定的整数是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。 输入格式: 输入在一行中给出一个需要判断的整数 M(−2 31 ≤M≤2 31 −1)。 输出格式: 如果M是素数,则在一行中输出Yes,否则输出No。如果输入了非正整数,也要输出No。 输入样例1: 11 输出样例1: Yes 输入样例2: 9 输出样例2: No 输入样例3: -2 输出样例3: No
时间: 2025-03-13 16:17:16 浏览: 62
### 使用 `break` 和 `continue` 判断整数是否为素数
当判断一个整数是否为素数时,可以利用 `break` 来提前终止循环,而 `continue` 可用于跳过当前迭代并继续下一次迭代。下面是一个具体的例子来展示这一过程。
#### C++ 实现示例
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
bool isPrime = true;
cout << "请输入一个正整数: ";
cin >> n;
if (n <= 1) {
isPrime = false;
} else {
for (int i = 2; i * i <= n; ++i) { // 这里只遍历到平方根以提高效率[^5]
if (n % i == 0) {
isPrime = false;
break; // 发现有因子则立即退出循环
}
}
}
if (isPrime)
cout << n << " 是素数";
else
cout << n << " 不是素数";
return 0;
}
```
在这个程序中,如果找到任何能整除给定数字的因素,则设置标志位 `isPrime=false` 并通过 `break` 跳出循环;如果没有发现这样的因素,在完成所有可能的测试之后会保持 `isPrime=true` 的状态。
对于 `continue` 的应用,通常是在处理更复杂的逻辑或者需要忽略某些特定情况下的数据点时才会用到。但在简单的素数检测算法中并不常见其直接作用。不过这里给出一种带有 `continue` 的变体:
#### 带有 `continue` 的 C++ 版本
```cpp
#include <iostream>
using namespace std;
int main() {
int num;
bool flag = true;
cout << "Enter a positive integer: ";
cin >> num;
if (num <= 1 || (num != 2 && num % 2 == 0)) {
flag = false;
} else {
for (int divisor = 3; divisor * divisor <= num; divisor += 2) {
if (num % divisor == 0) {
flag = false;
continue; // 继续下一个迭代而不是执行后续语句
}
}
}
if (!flag)
cout << num << " not prime.";
else
cout << num << " is prime.";
return 0;
}
```
此版本增加了额外的检查——排除偶数(除了2),并且仅考虑奇数作为潜在因数。每当遇到可被整除的情况时就更新标志变量 `flag` 并调用 `continue` ,从而避免不必要的计算。
阅读全文
相关推荐














