小丽同学想在1~n中找出这样的数,这个数的各个位的和不能被2整除也不能被5整除,比如3、12、25、30、100。这些数都满足各个位的和不能被2和5整除。 请你编程找出1~n中这些数有多少个?用c++进行编译
时间: 2024-03-14 17:43:10 浏览: 86
好的,以下是C++的实现代码:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cout << "请输入n:";
cin >> n;
int count = 0;
for (int i = 1; i <= n; i++) {
int digits_sum = 0;
string str_i = to_string(i);
for (int j = 0; j < str_i.length(); j++) {
digits_sum += str_i[j] - '0';
}
if (digits_sum % 2 != 0 && digits_sum % 5 != 0) {
count++;
}
}
cout << count << endl;
return 0;
}
```
输入n后,程序会遍历1到n,对于每个数,先将它转换为字符串,然后求出它的各个位的数字之和digits_sum,然后判断digits_sum是不是既不能被2整除也不能被5整除,如果符合条件,计数器count就加1。最后输出count就是符合条件的数的个数。
注意,在C++中我们通过字符串的方式求各个位的数字之和,而不是通过把数字转成整型再用取模和除法的方式。这是因为在C++中,对于较大的数,整型的取模和除法运算可能会溢出,而字符串的方式可以避免这个问题。
阅读全文