📜  检查是否有大数可被19整除

📅  最后修改于: 2021-05-05 01:32:01             🧑  作者: Mango

给定一个数字,任务是快速检查该数字是否可被19整除。
例子:

Input : x = 38
Output : Yes

Input : x = 47
Output : No

解决该问题的方法是提取最后一位数字,并将最后一位数字的2倍加到剩余数字上,然后重复此过程,直到获得两位数字为止。如果获得的两位数可以被19整除,则给定的数字可以被19整除。
方法:

  • 每次提取数字/截断数字的最后一位
  • 将2 *(前一个数字的最后一位数字)添加到截断后的数字中
  • 视需要重复上述三个步骤。

插图:

101156-->10115+2*6 = 10127-->1012+2*7=1026-->102+2*6=114 and 114=6*19,
So 101156 is divisible by 19.
C++
// CPP Program to validate the above logic
#include 
using namespace std;
 
// Function to check if the number
// is divisible by 19 or not
bool isDivisible(long long int n)
{
 
    while (n / 100) //
    {
        // Extracting the last digit
        int d = n % 10;
 
        // Truncating the number
        n /= 10;
 
        // Adding twice the last digit
        // to the remaining number
        n += d * 2;
    }
 
    // return true if number is divisible by 19
    return (n % 19 == 0);
}
 
// Driver code
int main()
{
    long long int n = 101156;
    if (isDivisible(n))
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
    return 0;
}


Java
// Java Program to validate the above logic
import java.io.*;
 
class GFG {
 
// Function to check if the
// number is divisible by 19 or not
static boolean isDivisible(long n)
{
 
    while (n / 100>0)
    {
        // Extracting the last digit
        long d = n % 10;
 
        // Truncating the number
        n /= 10;
 
        // Subtracting the five times the
        // last digit from the remaining number
        n += d * 2;
    }
 
    // Return n is divisible by 19
    return (n % 19 == 0);
}
 
// Driver code
 
    public static void main (String[] args) {
    long n = 101156;
    if (isDivisible(n))
        System.out.println( "Yes");
    else
        System.out.println( "No");
    }
}
// This code is contributed by Raj.
Python 3 # Python 3 Program to check 
# if the number is divisible
# by 19 or not 

# Function to check if the number 
# is divisible by 19 or not 
def isDivisible(n) :
    
    while (n // 100) :
                
        # Extracting the last digit 
        d = n % 10

        # Truncating the number 
        n //= 10

        # Adding twice the last digit 
        # to the remaining number 
        n += d * 2

    # return true if number 
    # is divisible by 19 
    return (n % 19 == 0) 

# Driver Code
if __name__ == "__main__" :

    n = 101156
    
    if (isDivisible(n)) : 
        print("Yes" )
        
    else :
        print("No") 
    
# This code is contributed 
# by ANKITRAI1


C#
// C# Program to validate the
// above logic
using System;
 
class GFG
{
     
// Function to check if the
// number is divisible by 19 or not
static bool isDivisible(long n)
{
 
    while (n / 100 > 0)
    {
        // Extracting the last digit
        long d = n % 10;
 
        // Truncating the number
        n /= 10;
 
        // Subtracting the five times
        // the last digit from the
        // remaining number
        n += d * 2;
    }
 
    // Return n is divisible by 19
    return (n % 19 == 0);
}
 
// Driver code
public static void Main()
{
    long n = 101156;
     
    if (isDivisible(n))
        Console.WriteLine( "Yes");
    else
        Console.WriteLine( "No");
}
}
 
// This code is contributed by ajit


PHP


Javascript


输出:
Yes

请注意,上面的程序可能没有多大意义,就像可以简单地执行n%19来检查可除性。该程序的目的是验证该概念。另外,如果输入数字很大并指定为字符串,那么这可能是一种有效的方法。