Check if a large number is divisible by 3 or not (original) (raw)

Last Updated : 23 Apr, 2025

Given a number, the task is that we divide number by 3. The input number may be large and it may not be possible to store even if we use long long int.
**Examples:

Input : n = 769452
Output : Yes
Input : n = 123456758933312
Output : No
Input : n = 3635883959606670431112222
Output : Yes

Since input number may be very large, we cannot use n % 3 to check if a number is divisible by 3 or not, especially in languages like C/C++. The idea is based on following fact.

A number is divisible by 3 if sum of its digits is divisible by 3.

**Illustration:

For example n = 1332
Sum of digits = 1 + 3 + 3 + 2
= 9
Since sum is divisible by 3,
answer is Yes.

**How does this work?

Let us consider 1332, we can write it as
1332 = 11000 + 3100 + 310 + 2
The proof is based on below observation:
Remainder of 10i divided by 3 is 1
So powers of 10 only result in value 1.
Remainder of "1
1000 + 3100 + 310 + 2"
divided by 3 can be written as :
11 + 31 + 3*1 + 2 = 9
The above expression is basically sum of
all digits.
Since 9 is divisible by 3, answer is yes.

Below is the implementation of the above fact :

C++ `

// C++ program to find if a number is divisible by // 3 or not #include<bits/stdc++.h> using namespace std;

// Function to find that number divisible by 3 or not int check(string str) { // Compute sum of digits int n = str.length(); int digitSum = 0; for (int i=0; i<n; i++) digitSum += (str[i]-'0');

// Check if sum of digits is divisible by 3.
return (digitSum % 3 == 0);

}

// Driver code int main() { string str = "1332"; check(str)? cout << "Yes" : cout << "No "; return 0; }

Java

// Java program to find if a number is // divisible by 3 or not import java.io.*; class IsDivisible { // Function to find that number // divisible by 3 or not static boolean check(String str) { // Compute sum of digits int n = str.length(); int digitSum = 0; for (int i=0; i<n; i++) digitSum += (str.charAt(i)-'0');

    // Check if sum of digits is 
    // divisible by 3.
    return (digitSum % 3 == 0);
}

// main function
public static void main (String[] args) 
{
    String str = "1332";
    if(check(str))
        System.out.println("Yes");
    else
        System.out.println("No");
}

}

Python

Python program to find if a number is

divisible by 3 or not

Function to find that number

divisible by 3 or not

def check(num): # Compute sum of digits digitSum = 0 while num > 0: rem = num % 10 digitSum = digitSum + rem num = num // 10

# Check if sum of digits is divisible by 3.
return (digitSum % 3 == 0)

main function

num = 1332 if check(num): print("Yes") else: print("No")

This code is contributed by Md Saiyad Ali.

C#

// C# program to find if a number is // divisible by 3 or not using System;

class GFG { // Function to find that number // divisible by 3 or not static bool check(string str) { // Compute sum of digits int n = str.Length; int digitSum = 0;

    for (int i = 0; i < n; i++)
        digitSum += (str[i] - '0');

    // Check if sum of digits is 
    // divisible by 3.
    return (digitSum % 3 == 0);
}

// main function
public static void Main () 
{
    string str = "1332";
    
    if(check(str))
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
}

}

// This code is contributed by vt_m.

JavaScript

PHP

n=strlen(n = strlen(n=strlen(str); $digitSum = 0; for ($i = 0; i<i < i<n; $i++) digitSum+=(digitSum += (digitSum+=(str[$i] - '0'); // Check if sum of digits // is divisible by 3. return ($digitSum % 3 == 0); } // Driver code $str = "1332"; x=check(x = check(x=check(str) ? "Yes" : "No "; echo($x); // This code is contributed by Ajit. ?>

`

**Time Complexity: O(n), where n is the number of digits in the input string. This is because the for loop is used to sum up all the digits in the string, and the loop runs for n iterations.
**Auxiliary Space: O(1), as we are not using any extra space.

**Method 2: Checking given number is divisible by 3 or not by using the modulo division operator "%".

C++ `

#include using namespace std; int main() { //input long long int n=769452;

// finding given number is divisible by 3 or not
if (n % 3 ==0)
{
    cout << "Yes";
}
else
{
    cout << "No";
}

return 0;

}

// This code is contributed by satwik4409.

Java

/*package whatever //do not write package name here / import java.io.;

class GFG { public static void main(String[] args) {

// input
long n = 769452;


// finding given number is
// divisible by 3 or not
if (n % 3 == 0) {
  System.out.println("Yes");
}
else {
  System.out.println("No");
}

} }

// This code is contributed by laxmigangarajula03

Python

Python code

To check whether the given number is divisible by 3 or not

#input n=769452

the above input can also be given as n=input() -> taking input from user

finding given number is divisible by 3 or not

if int(n)%3==0: print("Yes") else: print("No")

this code is contributed by gangarajula laxmi

C#

using System;

public class GFG{

static public void Main (){

//input
long n = 769452;


// finding given number is divisible by 3 or not
if (n % 3 == 0)
{
  Console.Write("Yes");
}
else
{
  Console.Write("No");
}  

} }

// This code is contributed by laxmigangarajula03

JavaScript

PHP

`

**Time Complexity: O(1) as it is doing constant operations
**Auxiliary Space: O(1)