Comprobar si un número dado es polidivisible o no

Dado un entero n, determine si n es polidivisible o no. En matemáticas, un número se llama Polidivisible si sigue algunas propiedades únicas. El número no debe tener ceros a la izquierda. El número formado por los primeros i dígitos del número de entrada debe ser divisible por i, donde  i > 1 ~y ~i <= número ~de ~dígitos ~en ~el ~número de entrada  . Si cualquier número sigue estas propiedades, entonces se llama número polidivisible
Ejemplos: 
 

Input: 345654
Output: 345654 is Polydivisible number.
Explanation: 
The first digit of the number is non-zero. 
The number formed by the first 2 digits(34) 
is divisible by 2. The number formed by the
first 3 digits(345) is divisible by 3. 
The number formed by the first 4 digits(3456)
is divisible by 4. The number formed by the
first 5 digits(34565) is divisible by 5. 
The number formed by the first 6 digits(345654)
is divisible by 6.     

Input: 130
Output: 130 is Not Polydivisible number.

Input: 129
Output: 129 is Polydivisible number.    

Enfoque: La idea es muy simple. 
 

  1. Extraiga todos los dígitos de la array y guárdelos en una array.
  2. Elija los primeros 2 dígitos y forme un número y verifique si es divisible por 2.
  3. Seleccione i-ésimo dígito y añádalo al número existente y verifique si el número es divisible por i.
  4. Si todas las condiciones anteriores se cumplen hasta agotar todos los dígitos, entonces el número dado es polidivisible.

A continuación se muestra la implementación del enfoque anterior.
 

C++

// CPP program to check whether
// a number is polydivisible or not
#include <bits/stdc++.h>
using namespace std;
 
// function to check polydivisible
// number
void check_polydivisible(int n)
{
    int N = n;
    vector<int> digit;
 
    // digit extraction of input number
    while (n > 0) {
 
        // store the digits in an array
        digit.push_back(n % 10);
        n /= 10;
    }
    reverse(digit.begin(), digit.end());
 
    bool flag = true;
    n = digit[0];
    for (int i = 1; i < digit.size(); i++) {
 
        // n contains first i digits
        n = n * 10 + digit[i];
 
        // n should be divisible by i
        if (n % (i + 1) != 0) {
            flag = false;
            break;
        }
    }
    if (flag)
        cout << N << " is Polydivisible number.";
    else
        cout << N << " is Not Polydivisible number.";
}
 
int main()
{
    int n = 345654;
    check_polydivisible(n);
}

Java

// Java program to check whether
// a number is polydivisible or not
import java.util.*;
import java.io.*;
 
class GFG {
     
    // function to check polydivisible
    // number
    static void check_polydivisible(int n)
    {
        int N = n;
        Vector<Integer> digit = new Vector<Integer>();
     
        // digit extraction of input number
        while (n > 0) {
     
            // store the digits in an array
            digit.add(new Integer(n % 10));
            n /= 10;
        }
        Collections.reverse(digit);
     
        boolean flag = true;
        n = digit.get(0);
        for (int i = 1; i < digit.size(); i++) {
     
            // n contains first i digits
            n = n * 10 + digit.get(i);
     
            // n should be divisible by i
            if (n % (i + 1) != 0) {
                flag = false;
                break;
            }
        }
        if (flag)
            System.out.println(N + " is Polydivisible number.");
        else
            System.out.println(N + " is Not Polydivisible number.");
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 345654;
        check_polydivisible(n);
    }
}

Python3

# Python 3 program to check whether
# a number is polydivisible or not
 
# function to check polydivisible
# number
def check_polydivisible(n):
    N = n
    digit = []
  
    # digit extraction of input number
    while (n > 0):
          
        # store the digits in an array
        digit.append(n % 10)
        n //= 10
  
    digit = digit[::-1]
  
    flag = True
    n = digit[0]
    for i in range(1, len(digit), 1):
          
        # n contains first i digits
        n = n * 10 + digit[i]
  
        # n should be divisible by i
        if (n % (i + 1) != 0):
            flag = False
            break
      
    if (flag):
        print(N, "is Polydivisible number.")
    else:
        print(N, "is Not Polydivisible number.")
 
# Driver Code
if __name__ == '__main__':
    n = 345654
    check_polydivisible(n)
 
     
# This code is contributed by
# Sahil_Shelangia
# Improved by Madhushree Sannigrahi

C#

// C# program to check whether
// a number is polydivisible or not
using System;
using System.Collections.Generic;
 
class GFG
{
     
    // function to check polydivisible
    // number
    static void check_polydivisible(int n)
    {
        int N = n;
        List<int> digit = new List<int>();
     
        // digit extraction of input number
        while (n > 0)
        {
     
            // store the digits in an array
            digit.Add((int)n % 10);
            n /= 10;
        }
        digit.Reverse();
     
        bool flag = true;
        n = digit[0];
        for (int i = 1; i < digit.Count; i++)
        {
     
            // n contains first i digits
            n = n * 10 + digit[i];
     
            // n should be divisible by i
            if (n % (i + 1) != 0)
            {
                flag = false;
                break;
            }
        }
        if (flag)
            Console.WriteLine(N +
                    " is Polydivisible number.");
        else
            Console.WriteLine(N +
                    " is Not Polydivisible number.");
    }
     
    // Driver code
    public static void Main (String[] args)
    {
        int n = 345654;
        check_polydivisible(n);
    }
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
    // Javascript program to check whether
    // a number is polydivisible or not
     
    // function to check polydivisible
    // number
    function check_polydivisible(n)
    {
        let N = n;
        let digit = [];
       
        // digit extraction of input number
        while (n > 0)
        {
       
            // store the digits in an array
            digit.push(n % 10);
            n = parseInt(n / 10, 10);
        }
        digit.reverse();
       
        let flag = true;
        n = digit[0];
        for (let i = 1; i < digit.length; i++)
        {
       
            // n contains first i digits
            n = n * 10 + digit[i];
       
            // n should be divisible by i
            if (n % (i + 1) != 0)
            {
                flag = false;
                break;
            }
        }
        if (flag)
            document.write(N + " is Polydivisible number." + "</br>");
        else
            document.write(N + " is Not Polydivisible number.");
    }
     
    let n = 345654;
      check_polydivisible(n);
     
</script>
Producción: 

345654 is Polydivisible number.

 

Publicación traducida automáticamente

Artículo escrito por jaideeppyne1997 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *