Check if a number can be written as sum of three consecutive integers
Last Updated :
20 Feb, 2023
Given an integer n, the task is to find whether n can be written as sum of three consecutive integer. If yes, find the three consecutive integer, else print “-1”.
Examples:
Input: n = 6
Output: 1 2 3
Explanation: 6 = 1 + 2 + 3.
Input: n = 7
Output: -1
Method 1: (Brute Force):
The idea is to run a loop from i = 0 to n – 2, check if (i + i+1 + i+2) is equal to n. Also, check if n is positive or negative and accordingly increment or decrement i by 1.
Below is the implementation of this approach:
C++
#include <bits/stdc++.h>
using namespace std;
void checksum( int n)
{
if (n == 0) {
cout << "-1 0 1" << endl;
return ;
}
int inc;
if (n > 0)
inc = 1;
else
inc = -1;
for ( int i = 0; i <= n - 2; i += inc) {
if (i + i + 1 + i + 2 == n) {
cout << i << " " << i + 1
<< " " << i + 2;
return ;
}
}
cout << "-1" ;
}
int main()
{
int n = 6;
checksum(n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void checksum( int n)
{
if (n == 0 ) {
System.out.println( "-1 0 1" );
return ;
}
int inc;
if (n > 0 )
inc = 1 ;
else
inc = - 1 ;
for ( int i = 0 ; i <= n - 2 ; i += inc) {
if (i + i + 1 + i + 2 == n) {
System.out.println(i + " " +
(i + 1 ) +
" " + (i + 2 ));
return ;
}
}
System.out.println( "-1" );
}
public static void main(String[] args)
{
int n = 6 ;
checksum(n);
}
}
|
Python3
def checksum(n):
if n = = 0 :
print ( "-1 0 1" )
return 0
inc = 0
if n > 0 :
inc = 1
else :
inc = - 1
for i in range ( 0 , n - 1 , inc):
if i + i + 1 + i + 2 = = n:
print (i , " " ,i + 1 , " " , i + 2 )
return 0
print ( "-1" )
n = 6
checksum(n)
|
C#
using System;
class GFG
{
static void checksum( int n)
{
if (n == 0) {
Console.WriteLine( "-1 0 1" );
return ;
}
int inc;
if (n > 0)
inc = 1;
else
inc = -1;
for ( int i = 0; i <= n - 2; i += inc) {
if (i + i + 1 + i + 2 == n) {
Console.WriteLine(i + " "
+ (i + 1) + " " + (i + 2));
return ;
}
}
Console.WriteLine( "-1" );
}
public static void Main()
{
int n = 6;
checksum(n);
}
}
|
PHP
<?php
function checksum( $n )
{
if ( $n == 0)
{
echo "-1 0 1" ;
return ;
}
$inc ;
if ( $n > 0)
$inc = 1;
else
$inc = -1;
for ( $i = 0; $i <= $n - 2; $i += $inc )
{
if ( $i + $i + 1 + $i + 2 == $n )
{
echo $i , " " , $i + 1
, " " , $i + 2;
return ;
}
}
echo "-1" ;
}
$n = 6;
checksum( $n );
?>
|
Javascript
<script>
function checksum(n)
{
if (n == 0) {
document.write( "-1 0 1" );
return ;
}
var inc;
if (n > 0)
inc = 1;
else
inc = -1;
for (i = 0; i <= n - 2; i += inc)
{
if (i + i + 1 + i + 2 == n) {
document.write(i + " "
+ (i + 1) + " "
+ (i + 2));
return ;
}
}
document.write( "-1" );
}
var n = 6;
checksum(n);
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1)
Method 2: (Efficient Approach)
The idea is to check if n is multiple of 3 or not.
Let n is sum of three consecutive integer of k – 1, k, k + 1. Therefore,
k – 1 + k + k + 1 = n
3*k = n
The three number will be n/3 – 1, n/3, n/3 + 1.
C++
#include <bits/stdc++.h>
using namespace std;
void checksum( int n)
{
if (n % 3 == 0)
cout << n / 3 - 1 << " "
<< n / 3 << " " << n / 3 + 1;
else
cout << "-1" ;
}
int main()
{
int n = 6;
checksum(n);
return 0;
}
|
Java
import java.util.*;
class GFG
{
static void checksum( int n)
{
if (n % 3 == 0 )
System.out.println( n / 3 - 1 + " "
+ n / 3 + " " + (n / 3 + 1 ));
else
System.out.println( "-1" );
}
public static void main(String[] args)
{
int n = 6 ;
checksum(n);
}
}
|
Python3
def checksum(n):
n = int (n)
if n % 3 = = 0 :
print ( int (n / 3 - 1 ) , " " ,
int (n / 3 ), " " , int (n / 3 + 1 ))
else :
print ( "-1" )
n = 6
checksum(n)
|
C#
using System;
class GFG
{
static void checksum( int n)
{
if (n % 3 == 0)
Console.WriteLine( n / 3 - 1 + " "
+ n / 3 + " " + (n / 3 + 1));
else
Console.WriteLine( "-1" );
}
public static void Main()
{
int n = 6;
checksum(n);
}
}
|
PHP
<?php
function checksum( $n )
{
if ( $n % 3 == 0)
echo $n / 3 - 1, " " ,
$n / 3, " " ,
$n / 3 + 1;
else
echo "-1" ;
}
$n = 6;
checksum( $n );
?>
|
Javascript
<script>
function checksum(n) {
if (n % 3 == 0)
document.write(n / 3 - 1 + " "
+ n / 3 + " "
+ (n / 3 + 1));
else
document.write( "-1" );
}
var n = 6;
checksum(n);
</script>
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...