用c语言编写一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例如128是一个自除数,因为128能被1、2、8整除。编写函数selfDivisor(num)判断num是否为自除数,使用该函数...
时间: 2024-05-07 16:21:30 浏览: 42
以下是使用 C 语言编写的实现:
```c
#include <stdio.h>
int selfDivisor(int num) {
int temp = num;
while (temp > 0) {
int digit = temp % 10;
if (digit == 0 || num % digit != 0) {
return 0; // 不是自除数
}
temp /= 10;
}
return 1; // 是自除数
}
int main() {
int num = 128;
if (selfDivisor(num)) {
printf("%d 是自除数\n", num);
} else {
printf("%d 不是自除数\n", num);
}
return 0;
}
```
运行结果:
```
128 是自除数
```
使用该函数判断整数是否为自除数,可以在主函数中直接调用 `selfDivisor` 函数,并根据返回值判断是否为自除数。
相关问题
用c语言编写一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例如128是一个自除数,因为128能被1、2、8整除。编写函数selfDivisor(num)判断num是否为自除数,使用该函数输出不大于N的所有自除数。
好的,接下来我将用ChitGPT为您解答。
关于您的问题,我已经理解了您的要求。以下是用C语言编写一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数的函数selfDivisor(num)的实现:
```
#include <stdio.h>
int selfDivisor(int num) {
int n = num;
while(n > 0) {
int digit = n % 10;
if(digit == 0 || num % digit != 0) {
return 0;
}
n /= 10;
}
return 1;
}
int main() {
int N;
printf("请输入一个正整数N:");
scanf("%d", &N);
printf("不大于%d的自除数有:", N);
for(int i = 1; i <= N; i++) {
if(selfDivisor(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
以上代码会先让用户输入一个正整数N,然后使用selfDivisor函数判断1到N之间的每个数是否为自除数,并输出所有符合条件的自除数。
希望这个答案能够帮到您,如果您还有其他问题,欢迎随时向我提问。
描述 一个不含0的数,如果它能被它的每一位除尽,则它是一个自除数。例 如128是一个自除数,因为128能被1、2、8整除。
自除数指的是一个不含0的正整数,它的每一位数都可以整除这个数本身。举个例子,128是一个自除数,因为它可以被1、2、8整除,同时它的每一位数1、2、8也都可以整除它本身。
另一个例子是自除数22,因为它可以被2和整除,同时它的每一位数也都是2,因此它是一个自除数。
但是需要注意的是,自除数并不是所有的数都有,而只有一部分数有可能是自除数。同时,自除数也不一定是质数。
阅读全文