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++
// CPP Program to check if a number can
// be written as sum of three consecutive
// integers.
#include <bits/stdc++.h>
using namespace std;
// function to check if a number can be written as sum of
// three consecutive integer.
void checksum(int n)
{
// if n is 0
if (n == 0) {
cout << "-1 0 1" << endl;
return;
}
int inc;
// if n is positive, increment loop by 1.
if (n > 0)
inc = 1;
// if n is negative, decrement loop by 1.
else
inc = -1;
// Running loop from 0 to n - 2
for (int i = 0; i <= n - 2; i += inc) {
// check if sum of three consecutive
// integer is equal to n.
if (i + i + 1 + i + 2 == n) {
cout << i << " " << i + 1
<< " " << i + 2;
return;
}
}
cout << "-1";
}
// Driver Program
int main()
{
int n = 6;
checksum(n);
return 0;
}
Java
// JAVA Code to check if a number
// can be written as sum of
// three consecutive integers.
import java.util.*;
class GFG
{
// function to check if a number
// can be written as sum of
// three consecutive integer.
static void checksum(int n)
{
// if n is 0
if (n == 0) {
System.out.println("-1 0 1");
return;
}
int inc;
// if n is positive,
// increment loop by 1.
if (n > 0)
inc = 1;
// if n is negative,
// decrement loop by 1.
else
inc = -1;
// Running loop from 0 to n - 2
for (int i = 0; i <= n - 2; i += inc) {
// check if sum of three consecutive
// integer is equal to n.
if (i + i + 1 + i + 2 == n) {
System.out.println(i + " " +
(i + 1) +
" " + (i + 2));
return;
}
}
System.out.println("-1");
}
/* Driver program to test above function */
public static void main(String[] args)
{
int n = 6;
checksum(n);
}
}
// This code is contributed by Arnav Kr. Mandal.
Python3
# Python3 code to check if a number
# can be written as sum of three
# consecutive integers.
# function to check if a number
# can be written as sum of three
# consecutive integer.
def checksum(n):
# if n is 0
if n == 0:
print("-1 0 1")
return 0
inc = 0
# if n is positive,
# increment loop by 1.
if n > 0:
inc = 1
# if n is negative,
# decrement loop by 1.
else:
inc = -1
# Running loop from 0 to n - 2
for i in range(0, n-1, inc):
# check if sum of three consecutive
# integer is equal to n.
if i + i + 1 + i + 2 == n:
print(i ," ",i + 1, " ", i + 2)
return 0
print("-1")
# Driver Code
n = 6
checksum(n)
# This code is contributed by "Sharad_Bhardwaj".
C#
// C# Code to check if a number
// can be written as sum of
// three consecutive integers.
using System;
class GFG
{
// function to check if a number
// can be written as sum of
// three consecutive integer.
static void checksum(int n)
{
// if n is 0
if (n == 0) {
Console.WriteLine("-1 0 1");
return;
}
int inc;
// if n is positive,
// increment loop by 1.
if (n > 0)
inc = 1;
// if n is negative,
// decrement loop by 1.
else
inc = -1;
// Running loop from 0 to n - 2
for (int i = 0; i <= n - 2; i += inc) {
// check if sum of three consecutive
// integer is equal to n.
if (i + i + 1 + i + 2 == n) {
Console.WriteLine(i + " "
+ (i + 1) +" " + (i + 2));
return;
}
}
Console.WriteLine("-1");
}
/* Driver program to test above function */
public static void Main()
{
int n = 6;
checksum(n);
}
}
// This code is contributed by vt_m.
PHP
<?php
// PHP Program to check if a
// number can be written
// as sum of three consecutive
// integers.
// function to check if a number
// can be written as sum of
// three consecutive integer.
function checksum($n)
{
// if n is 0
if ($n == 0)
{
echo "-1 0 1" ;
return;
}
$inc;
// if n is positive,
// increment loop by 1.
if ($n > 0)
$inc = 1;
// if n is negative,
// decrement loop by 1.
else
$inc = -1;
// Running loop from
// 0 to n - 2
for ($i = 0; $i <= $n - 2; $i += $inc)
{
// check if sum of three consecutive
// integer is equal to n.
if ($i + $i + 1 + $i + 2 == $n)
{
echo $i , " " , $i + 1
, " " , $i + 2;
return;
}
}
echo "-1";
}
// Driver Code
$n = 6;
checksum($n);
// This code is contributed by anuj_67.
?>
JavaScript
<script>
// Javascript Code to check if a number
// can be written as sum of
// three consecutive integers.
// function to check if a number
// can be written as sum of
// three consecutive integer.
function checksum(n)
{
// if n is 0
if (n == 0) {
document.write("-1 0 1");
return;
}
var inc;
// if n is positive,
// increment loop by 1.
if (n > 0)
inc = 1;
// if n is negative,
// decrement loop by 1.
else
inc = -1;
// Running loop from 0 to n - 2
for (i = 0; i <= n - 2; i += inc)
{
// check if sum of three consecutive
// integer is equal to n.
if (i + i + 1 + i + 2 == n) {
document.write(i + " "
+ (i + 1) + " "
+ (i + 2));
return;
}
}
document.write("-1");
}
/* Driver program to test above function */
var n = 6;
checksum(n);
// This code is contributed by gauravrajput1
</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++
// CPP Program to check if a number can be
// written as sum of three consecutive integer.
#include <bits/stdc++.h>
using namespace std;
// function to check if a number can be
// written as sum of three consecutive
// integers.
void checksum(int n)
{
// if n is multiple of 3
if (n % 3 == 0)
cout << n / 3 - 1 << " "
<< n / 3 << " " << n / 3 + 1;
// else print "-1".
else
cout << "-1";
}
// Driver Program
int main()
{
int n = 6;
checksum(n);
return 0;
}
Java
// JAVA Code to check if a number
// can be written as sum of three
// consecutive integers.
import java.util.*;
class GFG
{
// function to check if a number
// can be written as sum of three
// consecutive integers.
static void checksum(int n)
{
// if n is multiple of 3
if (n % 3 == 0)
System.out.println( n / 3 - 1 + " "
+ n / 3 + " " + (n / 3 + 1));
// else print "-1".
else
System.out.println("-1");
}
/* Driver program to test above function */
public static void main(String[] args)
{
int n = 6;
checksum(n);
}
}
// This code is contributed by Arnav Kr. Mandal.
Python3
# Python3 code to check if a number
# can be written as sum of three
# consecutive integer.
# function to check if a number
# can be written as sum of three
# consecutive integers.
def checksum(n):
n = int(n)
# if n is multiple of 3
if n % 3 == 0:
print(int(n / 3 - 1) ," ",
int(n / 3)," ",int(n / 3 + 1))
# else print "-1".
else:
print("-1")
# Driver Code
n = 6
checksum(n)
# This code is contributed by "Sharad_Bhardwaj".
C#
// C# Code to check if a number
// can be written as sum of three
// consecutive integers.
using System;
class GFG
{
// function to check if a number
// can be written as sum of three
// consecutive integers.
static void checksum(int n)
{
// if n is multiple of 3
if (n % 3 == 0)
Console.WriteLine( n / 3 - 1 + " "
+ n / 3 + " " + (n / 3 + 1));
// else print "-1".
else
Console.WriteLine("-1");
}
/* Driver program to
test above function */
public static void Main()
{
int n = 6;
checksum(n);
}
}
// This code is contributed by vt_m.
PHP
<?php
// PHP Code to check if a number
// can be written as sum of three
// consecutive integers.
// function to check if
// a number can be written
// as sum of three consecutive
// integers.
function checksum($n)
{
// if n is multiple of 3
if ($n % 3 == 0)
echo $n / 3 - 1, " ",
$n / 3, " ",
$n / 3 + 1;
// else print "-1".
else
echo "-1";
}
// Driver Program
$n = 6;
checksum($n);
// This code is contributed by aj_36
?>
JavaScript
<script>
// javascript Code to check if a number
// can be written as sum of three
// consecutive integers.
// function to check if a number
// can be written as sum of three
// consecutive integers.
function checksum(n) {
// if n is multiple of 3
if (n % 3 == 0)
document.write(n / 3 - 1 + " "
+ n / 3 + " "
+ (n / 3 + 1));
// else print "-1".
else
document.write("-1");
}
/* Driver program to test above function */
var n = 6;
checksum(n);
// This code is contributed by todaysgaurav
</script>
Time Complexity: O(1)
Auxiliary Space: O(1)