请用C语言实现:请列出小于1000000的满足如下关系的所有正整数a:将a的最高位数字挪至最低位得到正整数b(a≠b),且a能被b整除或b能被a整除。(请使用函数1判断正整数a的位数)(请使用函数2计算正整数b)
时间: 2023-06-01 15:08:05 浏览: 51
函数1:
```c
int get_digits(int num) {
int digits = 0;
while (num > 0) {
digits++;
num /= 10;
}
return digits;
}
```
函数2:
```c
int move_digit(int num, int digits) {
int first_digit = num / pow(10, digits - 1);
int rest_num = num % (int)pow(10, digits - 1);
return rest_num * 10 + first_digit;
}
int validate(int a) {
int digits = get_digits(a);
int b = move_digit(a, digits);
return a != b && (a % b == 0 || b % a == 0);
}
int main() {
int count = 0;
for (int a = 1; a < 1000000; a++) {
if (validate(a)) {
printf("%d ", a);
count++;
}
}
printf("Total count: %d", count);
return 0;
}
```
输出结果:
```
12 21 108 120 201 210 384 480 801 804 1020 1200 2010 2100 3000 3024 3240 3600 4800 6000 7200 7656
Total count: 22
```