自除数-C语言

描述

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数。

  • 1 <= left <= right <= 104

自除数 是指可以被它包含的每一位数整除的数,自除数 不允许包含 0 。例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 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且这个数能否整除这个位数,。可以自定义一个函数,对边界中的每一个数进行判断是否为自除数,再自定义一个函数将自除数存放在数组中并返回。

复制代码
#include<stdio.h>
#include<stdlib.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 Size=0;
    //自除数数组
    int* p = selfDividingNumbers(left,right,&Size);
    for (int i = 0; i < Size; i++)
    {
        printf("%d\n", *(p + i));
    }
}
相关推荐
张张123y几秒前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
Navigator_Z1 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
冻柠檬飞冰走茶3 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing033 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊3 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆6754 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩5 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
Hhy_11077 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy19907 小时前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy19907 小时前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala