酷代码 AI
菜单
服务商

水晶花园的门上有一道密码锁。大家需要先写出从1到门上数字的每一个数,然后在里面找出门上数字的所有因数,把这些因数去掉,再把剩下的数字输入到密码锁上,就可以把门打开了。比如,门上的数字是6,那么就从1、2、3、4、5、6中,去掉6的因数1、2、3、6,剩下的4、5,就是最终的密码。请你编写一个程序,输入水晶门上的数字,输出水晶门的密码。 输入: 一个整数n,表示水晶门上的数字。 输出: 一行若干个整数,表示水晶门的密码,相邻数字之间用空格隔开。 语言方向:C++

```cpp #include <iostream> #include <vector> int main() { int n; // 从标准输入读取门上的数字 std::cin >> n; // 用于标记每个数字是否为因数 std::vector<bool> isFactor(n + 1, false); // 找出n的所有因数并标记 for (int i = 1; i <= n; ++i) { if (n % i == 0) { isFactor[i] = true; } } // 输出不是因数的数字 bool first = true; for (int i = 1; i <= n; ++i) { if (!isFactor[i]) { if (!first) { std::cout << " "; } std::cout << i; first = false; } } std::cout << std::endl; return 0; } ``` 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 数组或向量的下标是从0开始的,在本题中`std::vector<bool> isFactor(n + 1, false);`创建的向量长度为`n + 1`,要确保在使用时不会越界。 2. 输出格式问题,本题要求相邻数字之间用空格隔开,要注意第一个数字前不能有多余的空格。 3. 因数的判断逻辑,要确保所有能整除`n`的数都被正确标记为因数。 [2025-11-15 19:15:23 | AI写代码神器 | 355点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多