Comprobar si un número es divisible por 31 o no

Dado un número N , la tarea es verificar si el número es divisible por 31 o no. 
Ejemplos: 
 

Entrada: N = 1922 
Salida: Sí 
Explicación: 
31 * 62 = 1922
Entrada: N = 2722400 
Salida: No 
 

Enfoque: La prueba de divisibilidad de 31 es: 
 

  1. Extraiga el último dígito.
  2. Resta 3 * último dígito del número restante obtenido después de quitar el último dígito.
  3. Repita los pasos anteriores hasta obtener un número de dos dígitos, o cero.
  4. Si el número de dos dígitos es divisible por 31, o es 0, entonces el número original también es divisible por 31.

Por ejemplo: 
 

If N = 49507

Step 1:
  N = 49507
  Last digit = 7
  Remaining number = 4950
  Subtracting 3 times last digit
  Resultant number = 4950 - 3*7 = 4929

Step 2:
  N = 4929
  Last digit = 9
  Remaining number = 492
  Subtracting 3 times last digit
  Resultant number = 492 - 3*9 = 465

Step 3:
  N = 465
  Last digit = 5
  Remaining number = 46
  Subtracting 3 times last digit
  Resultant number = 46 - 3*5 = 31

Step 4:
  N = 31
  Since N is a two-digit number,
  and 31 is divisible by 31

Therefore N = 49507 is also divisible by 31

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

C++

// C++ program to check whether a number
// is divisible by 31 or not
#include<bits/stdc++.h>
#include<stdlib.h>
 
using namespace std;
 
// Function to check if the number is divisible by 31 or not
bool isDivisible(int n)
{
    int d;
     
    // While there are at least two digits
    while (n / 100)
    {
 
        // Extracting the last
        d = n % 10;
 
        // Truncating the number
        n /= 10;
 
        // Subtracting three times the last
        // digit to the remaining number
        n = abs(n-(d * 3));
    }
     
    // Finally return if the two-digit
    // number is divisible by 31 or not
    return (n % 31 == 0) ;
}
 
// Driver Code
int main()
{
    int N = 1922;
 
    if (isDivisible(N))
        cout<<"Yes"<<endl ;
    else
        cout<<"No"<<endl ;
     
    return 0;    
}
 
// This code is contributed by ANKITKUMAR34

Java

// Java program to check whether a number
// is divisible by 31 or not
import java.util.*;
 
class GFG{
  
// Function to check if the number is divisible by 31 or not
static boolean isDivisible(int n)
{
    int d;
      
    // While there are at least two digits
    while ((n / 100) > 0)
    {
  
        // Extracting the last
        d = n % 10;
  
        // Truncating the number
        n /= 10;
  
        // Subtracting three times the last
        // digit to the remaining number
        n = Math.abs(n - (d * 3));
    }
      
    // Finally return if the two-digit
    // number is divisible by 31 or not
    return (n % 31 == 0) ;
}
  
// Driver Code
public static void main(String[] args)
{
    int N = 1922;
  
    if (isDivisible(N))
        System.out.print("Yes");
    else
        System.out.print("No");
}    
}
 
// This code is contributed by PrinciRaj1992

Python 3

# Python program to check whether a number
# is divisible by 31 or not
 
# Function to check if the number is
# divisible by 31 or not
def isDivisible(n) :
 
    # While there are at least two digits
    while n // 100 :
 
        # Extracting the last
        d = n % 10
 
        # Truncating the number
        n //= 10
 
        # Subtracting three times the last
        # digit to the remaining number
        n = abs(n-(d * 3))
 
    # Finally return if the two-digit
    # number is divisible by 31 or not
    return (n % 31 == 0)
 
# Driver Code
if __name__ == "__main__" :
 
    n = 1922
 
    if (isDivisible(n)) :
        print("Yes")
    else :
        print("No")

C#

// C# program to check whether a number
// is divisible by 31 or not
using System;
 
class GFG{
   
// Function to check if the number is divisible by 31 or not
static bool isDivisible(int n)
{
    int d;
       
    // While there are at least two digits
    while ((n / 100) > 0)
    {
   
        // Extracting the last
        d = n % 10;
   
        // Truncating the number
        n /= 10;
   
        // Subtracting three times the last
        // digit to the remaining number
        n = Math.Abs(n - (d * 3));
    }
       
    // Finally return if the two-digit
    // number is divisible by 31 or not
    return (n % 31 == 0) ;
}
   
// Driver Code
public static void Main(String[] args)
{
    int N = 1922;
   
    if (isDivisible(N))
        Console.Write("Yes");
    else
        Console.Write("No");
}    
}
 
// This code is contributed by Rajput-Ji

Javascript

<script>
// Javascript program to check whether a number
// is divisible by 31 or not
   
// Function to check if the number is divisible by 31 or not
function isDivisible(n)
{
    let d;
        
    // While there are at least two digits
    while (Math.floor(n / 100) > 0)
    {
    
        // Extracting the last
        d = n % 10;
    
        // Truncating the number
        n = Math.floor(n / 10);
    
        // Subtracting three times the last
        // digit to the remaining number
        n = Math.abs(n - (d * 3));
    }
        
    // Finally return if the two-digit
    // number is divisible by 31 or not
    return (n % 31 == 0) ;
}
 
// Driver Code
     
    let N = 1922;
     
    if (isDivisible(N) != 0)
        document.write("Yes") ;
    else
        document.write("No");
 
// This code is contributed by sanjoy_62.
</script>
Producción: 

Yes

 

Complejidad de tiempo: O (log 10 N)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por virusbuddha 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 *