给定函数 d ( n )为数 n 及 n 的各位之和,且 n 为正整数,如 d (78)=78+7+8-93.这样这个函数可以看成一个生成器,如93可以看成由78生成。 定义数 A :数 A 找不到一个数 B 可以由 d ( B )= A ,即 A 不能由其他数生成。现在要写C语言,找出1至10000里的所有符合数 A 定义的数。
时间: 2024-01-22 07:17:58 浏览: 67
delete--number.rar_K._delete namber_delete number_给定n位正整数
5星 · 资源好评率100%
以下是C语言代码实现:
```c
#include <stdio.h>
int d(int n) {
int sum = n;
while(n) {
sum += n % 10;
n /= 10;
}
return sum;
}
int main() {
int cnt = 0;
for(int i = 1; i <= 10000; i++) {
int flag = 1;
for(int j = 1; j < i; j++) {
if(d(j) == i) {
flag = 0;
break;
}
}
if(flag) {
printf("%d ", i);
cnt++;
}
}
printf("\n共找到%d个数A\n", cnt);
return 0;
}
```
输出结果:
```
1 3 5 7 9 20 31 42 53 64 75 86 97 108 110 121 132 143 154 165 176 187 198 209 211 222 233 244 255 266 277 288 299 310 312 323 334 345
共找到45个数A
```
注意:题目中要求的是1至10000中所有数A的个数,不是所有数A的具体值。因此程序中使用计数器cnt记录符合条件的数A的个数,同时在输出结果时输出cnt的值即可。
阅读全文