Given a positive number n, write a function isMultipleof5(int n) that returns true if n is multiple of 5, otherwise false. You are not allowed to use % and / operators.
Method 1 (Repeatedly subtract 5 from n)
Run a loop and subtract 5 from n in the loop while n is greater than 0. After the loop terminates, check whether n is 0. If n becomes 0 then n is multiple of 5, otherwise not.
C++
#include <iostream>
using namespace std;
bool isMultipleof5 ( int n)
{
while ( n > 0 )
n = n - 5;
if ( n == 0 )
return true ;
return false ;
}
int main()
{
int n = 19;
if ( isMultipleof5(n) == true )
cout << n << " is multiple of 5" ;
else
cout << n << " is not a multiple of 5" ;
return 0;
}
|
C
#include<stdio.h>
bool isMultipleof5 ( int n)
{
while ( n > 0 )
n = n - 5;
if ( n == 0 )
return true ;
return false ;
}
int main()
{
int n = 19;
if ( isMultipleof5(n) == true )
printf ( "%d is multiple of 5\n" , n);
else
printf ( "%d is not a multiple of 5\n" , n);
return 0;
}
|
Java
class GFG
{
static boolean isMultipleof5 ( int n)
{
while (n > 0 )
n = n - 5 ;
if (n == 0 )
return true ;
return false ;
}
public static void main(String[] args)
{
int n = 19 ;
if (isMultipleof5(n) == true )
System.out.printf( "%d is multiple of 5\n" , n);
else
System.out.printf( "%d is not a multiple of 5\n" , n);
}
}
|
Python3
def isMultipleof5(n):
while ( n > 0 ):
n = n - 5
if ( n = = 0 ):
return 1
return 0
i = 19
if ( isMultipleof5(i) = = 1 ):
print (i, "is multiple of 5" )
else :
print (i, "is not a multiple of 5" )
|
C#
using System;
class GFG
{
static bool isMultipleof5 ( int n)
{
while (n > 0)
n = n - 5;
if (n == 0)
return true ;
return false ;
}
public static void Main()
{
int n = 19;
if (isMultipleof5(n) == true )
Console.Write(n + " is multiple of 5\n" );
else
Console.Write(n + " is not a multiple of 5\n" );
}
}
|
PHP
<?php
function isMultipleof5 ( $n )
{
while ( $n > 0 )
$n = $n - 5;
if ( $n == 0 )
return true;
return false;
}
$n = 19;
if ( isMultipleof5( $n ) == true )
echo ( "$n is multiple of 5" );
else
echo ( "$n is not a multiple of 5" );
?>
|
Output :
19 is not a multiple of 5
Method 2 (Convert to string and check the last character)
Convert n to a string and check the last character of the string. If the last character is ‘5’ or ‘0’ then n is multiple of 5, otherwise not.
C++
#include <bits/stdc++.h>
using namespace std;
# define MAX 11
bool isMultipleof5( int n)
{
char str[MAX];
int len = strlen (str);
if ( str[len - 1] == '5' ||
str[len - 1] == '0' )
return true ;
return false ;
}
int main()
{
int n = 19;
if ( isMultipleof5(n) == true )
cout << n << " is multiple of 5" <<endl;
else
cout << n << " is not multiple of 5" <<endl;
return 0;
}
|
C
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
# define MAX 11
bool isMultipleof5( int n)
{
char str[MAX];
int len = strlen (str);
if ( str[len - 1] == '5' ||
str[len - 1] == '0' )
return true ;
return false ;
}
int main()
{
int n = 19;
if ( isMultipleof5(n) == true )
printf ( "%d is multiple of 5\n" , n);
else
printf ( "%d is not a multiple of 5\n" , n);
return 0;
}
|
Java
class GFG
{
static int MAX = 11 ;
static boolean isMultipleof5( int n)
{
char str[] = new char [MAX];
int len = str.length;
if (str[len - 1 ] == '5' ||
str[len - 1 ] == '0' )
return true ;
return false ;
}
public static void main(String[] args)
{
int n = 19 ;
if ( isMultipleof5(n) == true )
System.out.println(n + " is multiple " +
"of 5" );
else
System.out.println(n + " is not a " +
"multiple of 5" );
}
}
|
Python3
MAX = 11 ;
def isMultipleof5(n):
s = str (n);
l = len (s);
if (s[l - 1 ] = = '5' or
s[l - 1 ] = = '0' ):
return True ;
return False ;
n = 19 ;
if (isMultipleof5(n) = = True ):
print (n, "is multiple of 5" );
else :
print (n, "is not a multiple of 5" );
|
C#
using System;
class GFG
{
static int MAX = 11;
static bool isMultipleof5( int n)
{
char [] str = new char [MAX];
int len = str.Length;
if (str[len - 1] == '5' ||
str[len - 1] == '0' )
return true ;
return false ;
}
static void Main()
{
int n = 19;
if ( isMultipleof5(n) == true )
Console.WriteLine( "{0} is " +
"multiple of 5" , n);
else
Console.WriteLine( "{0} is not a " +
"multiple of 5" , n);
}
}
|
PHP
<?php
$MAX = 11;
function isMultipleof5( $n )
{
global $MAX ;
$str = (string) $n ;
$len = strlen ( $str );
if ( $str [ $len - 1] == '5' ||
$str [ $len - 1] == '0' )
return true;
return false;
}
$n = 19;
if (isMultipleof5( $n ) == true )
echo "$n is multiple of 5" ;
else
echo "$n is not a multiple of 5" ;
?>
|
Output:
19 is not a multiple of 5
Thanks to Baban_Rathore for suggesting this method.
Method 3 (Set last digit as 0 and use floating point trick)
A number n can be a mulpile of 5 in two cases. When last digit of n is 5 or 10. If last bit in binary equivalent of n is set (which can be the case when last digit is 5) then we multiply by 2 using n<<=1 to make sure that if the number is multpile of 5 then we have the last digit as 0. Once we do that, our work is to just check if the last digit is 0 or not, which we can do using float and integer comparison trick.
C++
#include <iostream>
using namespace std;
bool isMultipleof5( int n)
{
if ( (n & 1) == 1 )
n <<= 1;
float x = n;
x = ( ( int )(x * 0.1) ) * 10;
if ( ( int )x == n )
return true ;
return false ;
}
int main()
{
int i = 19;
if ( isMultipleof5(i) == true )
cout << i << " is multiple of 5\n" ;
else
cout << i << " is not a multiple of 5\n" ;
getchar ();
return 0;
}
|
C
#include<stdio.h>
bool isMultipleof5( int n)
{
if ( (n & 1) == 1 )
n <<= 1;
float x = n;
x = ( ( int )(x * 0.1) ) * 10;
if ( ( int )x == n )
return true ;
return false ;
}
int main()
{
int i = 19;
if ( isMultipleof5(i) == true )
printf ( "%d is multiple of 5\n" , i);
else
printf ( "%d is not a multiple of 5\n" , i);
getchar ();
return 0;
}
|
Java
class GFG
{
static boolean isMultipleof5( int n)
{
if ((n & 1 ) == 1 )
n <<= 1 ;
float x = n;
x = (( int )(x * 0.1 )) * 10 ;
if (( int )x == n)
return true ;
return false ;
}
public static void main(String[] args)
{
int i = 19 ;
if (isMultipleof5(i) == true )
System.out.println(i + "is multiple of 5" );
else
System.out.println(i + " is not a " +
"multiple of 5" );
}
}
|
Python3
def isMultipleof5(n):
if ( (n & 1 ) = = 1 ):
n << = 1 ;
x = n
x = ( ( int )(x * 0.1 ) ) * 10
if ( x = = n ):
return 1
return 0
i = 19
if ( isMultipleof5(i) = = 1 ):
print (i, "is multiple of 5" )
else :
print (i, "is not a multiple of 5" )
|
C#
class GFG
{
static bool isMultipleof5( int n)
{
if ((n & 1) == 1)
n <<= 1;
float x = n;
x = (( int )(x * 0.1)) * 10;
if (( int )x == n)
return true ;
return false ;
}
public static void Main()
{
int i = 19;
if (isMultipleof5(i) == true )
System.Console.WriteLine(i + "is multiple of 5" );
else
System.Console.WriteLine(i + " is not a " +
"multiple of 5" );
}
}
|
PHP
<?php
function isMultipleof5( $n )
{
if (( $n & 1) == 1 )
$n <<= 1;
$x = $n ;
$x = ((int)( $x * 0.1)) * 10;
if ( (int)( $x ) == $n )
return true;
return false;
}
$i = 19;
if ( isMultipleof5( $i ) == true )
echo "$i is multiple of 5\n" ;
else
echo "$i is not a multiple of 5\n" ;
?>
|
Output :
19 is not a multiple of 5
Thanks to darkprince for suggesting this method.
Please write comments if you find the above codes/algorithms incorrect, or find other ways to solve the same problem.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.