河北邯郸特色美食,推广网站优化怎么做,湘潭做网站选择磐石网络,wordpress扁平模板描述 给定两个整数 left 和 right #xff0c;返回一个列表#xff0c;列表的元素是范围 [left, right] 内所有的 自除数。
1 left right 104 自除数 是指可以被它包含的每一位数整除的数#xff0c;自除数 不允许包含 0 。例如#xff0c;128 是一个 自除…描述 给定两个整数 left 和 right 返回一个列表列表的元素是范围 [left, right] 内所有的 自除数。
1 left right 104 自除数 是指可以被它包含的每一位数整除的数自除数 不允许包含 0 。例如128 是一个 自除数 因为 128 % 1 0128 % 2 0128 % 8 0。
示例1 输入left 1, right 22
输出[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22] 示例2 输入left 47, right 85
输出[48,55,66,77] 由于被判断的数不确定有是一个几位数需用while判断而判断自除数需要用取余运算判断每一位是否为0且这个数能否整除这个位数。可以自定义一个函数对边界中的每一个数进行判断是否为自除数再自定义一个函数将自除数存放在数组中并返回。
#includestdio.h
#includestdlib.h
#include stdbool.h
#include text.h
//判断是否为自除数
bool isSelfDividing(int num)
{int a num;while (a 0){int b a % 10;if (b 0 || num % b ! 0){return false;}a a / 10;}return true;
}
//存边界内的自除数
int* selfDividingNumbers(int left, int right, int* returnSize) {//动态分配内存空间int* p (int*)malloc(sizeof(int) * (right - left 1));int pos 0;for (int i left; i right; i){if (isSelfDividing(i))p[pos] i;}*returnSize pos;return p;
}int main()
{//输入边界int left, right;scanf(%d%d, left, right);//自除数个数int Size0;//自除数数组int* p selfDividingNumbers(left,right,Size);for (int i 0; i Size; i){printf(%d\n, *(p i));}
}