输入一个正整数n,求解并输出1~n之间能被3整除、但不能被7整除的所有整数之 和。
时间: 2024-05-10 16:20:59 浏览: 8
算法1:
1. 循环遍历1~n之间的每一个整数
2. 判断该整数是否能被3整除,且不能被7整除
3. 如果符合条件,累加到结果中
4. 输出结果
时间复杂度:O(n)
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 7 != 0) {
sum += i;
}
}
cout << sum << endl;
return 0;
}
```
算法2:
1. 求出1~n之间能被3整除的所有整数
2. 求出1~n之间能被7整除的所有整数
3. 求出它们的交集
4. 求交集中所有元素的和
5. 输出结果
时间复杂度:O(n/3+n/7+n)
C++ 代码
```cpp
#include <iostream>
#include <set>
using namespace std;
int main() {
int n, sum = 0;
set<int> s3, s7, res;
cin >> n;
for (int i = 3; i <= n; i += 3) {
s3.insert(i);
}
for (int i = 7; i <= n; i += 7) {
s7.insert(i);
}
set_intersection(s3.begin(), s3.end(), s7.begin(), s7.end(), inserter(res, res.begin()));
for (int x : res) {
sum += x;
}
cout << sum << endl;
return 0;
}
```