自除数

int* selfDividingNumbers(int left, int right, int* returnSize) {
    int cnt = 0;
    int num = 0;
    int* p = (int*)malloc(sizeof(int) * (right - left + 1));
    int i = 0;
    for (i = left; i <= right; i++)
    {
        int tmp = i;
        while (tmp)
        {
            if ((tmp % 10 == 0) || (i % (tmp % 10) != 0))
            {
            //这里判断的是自除数不能包含0,或者这个数%上个十百位上的数不等于0也不是自除数
            //一个数%上10等于0,说明这位数是0
                break;
            }
            tmp /= 10;
        }
        if (tmp == 0)
        {
            cnt++;
            p[num++] = i;
        }
    }
    *returnSize = cnt;
    return p;
}

你可能感兴趣的:(算法,数据结构)