C++ 具体的颜色根据符合条件的个数来染色,符合 1 个条件染蓝色,符合2个条件染黄色,符合 3 个条件染红色,最后分别输出颜色为黄色对应的墙编号. 条件 1: 是偶数 条件 2: 是素数 条件3: 是5的倍数 [输入]输入一个正整数n,表示有 n 面白墙 (0<n<100000) [输出]输出为一行,染色为黄墙的编号,用空格隔开
时间: 2024-02-28 11:56:38 浏览: 59
好的,根据你的要求,我已经了解了问题的情况。针对这个问题,我们可以使用以下的 C++ 代码来解决:
```c++
#include <iostream>
#include <vector>
using namespace std;
// 判断是否为素数
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 统计符合条件的个数
int countConditions(int n) {
int count = 0;
if (n % 2 == 0) count++;
if (isPrime(n)) count++;
if (n % 5 == 0) count++;
return count;
}
int main() {
int n;
cin >> n;
vector<int> yellowWalls;
for (int i = 1; i <= n; i++) {
if (countConditions(i) == 2) {
cout << i << " ";
yellowWalls.push_back(i);
}
}
cout << endl;
return 0;
}
```
代码的思路如下:
1. 定义一个函数 `isPrime`,用来判断一个数是否为素数,如果是素数返回 true,否则返回 false。
2. 定义一个函数 `countConditions`,用来统计一个数符合条件的个数,具体为:如果是偶数则计数器加 1,如果是素数则计数器加 1,如果是 5 的倍数则计数器加 1,最后返回计数器的值。
3. 在主函数中,先输入白墙的数量,然后定义一个 `vector` 用来存储染成黄色的墙的编号。
4. 遍历每一面白墙,如果符合条件的个数为 2,则输出该墙的编号,并将该编号存入 `vector` 中。
5. 最后输出黄色墙的编号,输出完毕后结束程序。
希望这个代码对你有帮助!
阅读全文