Self Dividing Numbers

self-dividing number is a number that is divisible by every digit it contains.

Explanation
128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.

Example 1:

Input: left = 1, right = 22
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
Approach

Java

import java.util.ArrayList;
import java.util.List;

public class SelfDividingNumbers {
    public static void main(String[] args) {
        int start = 1;
        int end = 22;
        List<IntegersdN = selfDividingNumbers(start, end);
        System.out.println(sdN);
    }

    // Method to find selft dividing number
    public static List<IntegerselfDividingNumbers(int leftint right) {
        List<Integerlist = new ArrayList<>();
        // iterate from to till end
        for (int i = left; i <= right; i++) {
            // is true then add into result
            if (isSelfDividing(i))
                list.add(i);
        }
        return list;
    }

    // check number isSelfDividing
    private static boolean isSelfDividing(int n) {
        // till 9 all are self dividing
        if (n < 9)
            return true;
        int tmp = n;
        // iterate till 0
        while (tmp != 0) {
            int mode = tmp % 10;
            // if mode 0 then
            if (mode == 0)
                return false;
            // if not then false
            if (n % mode != 0)
                return false;
            tmp /= 10;
        }
        return true;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

// check number isSelfDividing
bool isSelfDividing(int n
{
        // till 9 all are self dividing
        if (n < 9)
            return true;
        int tmp = n;
        // iterate till 0
        while (tmp != 0) {
            int mode = tmp % 10;
            // if mode 0 then
            if (mode == 0)
                return false;
            // if not then false
            if (n % mode != 0)
                return false;
            tmp /= 10;
        }
        return true;
}
//function to find selft dividing number
vector<intselfDividingNumbers(int leftint right)
{
    vector<intlist;
    // iterate from to till end
    for (int i = lefti <= righti++) {
        // is true then add into result
        if (isSelfDividing(i))
         list.push_back(i);
    }
        return list;
}

int main()
{
    int start = 1;
    int end = 22;
    vector<intsdNselfDividingNumbers(startend);
    for(int i=0;i<sdN.size();i++)
       cout<<sdN[i]<<" ";
}


No comments:

Post a Comment