In algebra, Discriminant helps us deduce various properties of the roots of a polynomial or polynomial function without even computing them. Let's look at this general quadratic polynomial of degree two:
ax^2+bx+c
Here the discriminant of the equation is calculated using the formula:
b^2-4ac
Now we can deduce the following properties:
- If the discriminant is equal to zero then the polynomial has equal roots i.e., a=b.
- If the discriminant is positive and the coefficients are real, then the polynomial has two real roots.
Here are a few conditions that we must keep in mind while programming and making deductions from the discriminant:
- If the discriminant is equal to zero then one solution is possible.
- If the discriminant is positive then two solutions are possible.
- If the discriminant is negative then no real solutions are possible.
Examples:
Input: a = 20 b = 30 c = 10 Explanation: (30**2) - (4*20*10) Output: Discriminant is 100 which is positive Hence Two solutions Input: a = 9 b = 7 c = 12 Explanation: (30**2) - (4*20*10) Output: Discriminant is -383 which is negative Hence no real solutions
// CPP program to calculate Discriminant
#include <bits/stdc++.h>
using namespace std;
void discriminant(int a, int b, int c){
int discriminant = (b*b) - (4*a*c);
if(discriminant > 0){
cout<<"Discriminant is "<<discriminant
<<" which is Positive"<<endl;
cout<<"Hence Two Solutions";
}
else if(discriminant == 0){
cout<<"Discriminant is "<<discriminant
<<" which is Zero"<<endl;
cout<<"Hence One Solution";
}
else if(discriminant < 0){
cout<<"Discriminant is "<<discriminant
<<" which is Negative"<<endl;
cout<<"Hence No Real Solutions";
}
}
// Driver Code
int main(){
int a = 20, b = 30, c = 10;
// function call to print discriminant
discriminant(a, b, c);
return 0;
}
// This code is contributed by
// Sanjit_Prasad
// Java program to calculate discriminant
public class Discriminant{
// function to calculate discriminant
static int disc(int a, int b, int c){
int dis = (int)Math.pow(b,2) - (4*a*c);
return dis;
}
// Driver Code
public static void main(String args[]){
int a=20;
int b=30;
int c=10;
int discriminant = disc(a, b, c);
if (discriminant > 0){
System.out.println("Discriminant is " + discriminant
+ " which is Positive");
System.out.println("Hence Two Solutions");
}
else if (discriminant == 0){
System.out.println("Discriminant is " + discriminant
+ " which is Zero");
System.out.println("Hence One Solution");
}
else {
System.out.println("Discriminant is "+ discriminant
+ " which is Negative");
System.out.println("Hence No Real Solutions");
}
}
}
# Python program to calculate Discriminant
def discriminant(a, b, c):
discriminant = (b**2) - (4*a*c)
if discriminant > 0:
print('Discriminant is', discriminant,
"which is Positive")
print('Hence Two Solutions')
elif discriminant == 0:
print('Discriminant is', discriminant,
"which is Zero")
print('Hence One Solution')
elif discriminant < 0:
print('Discriminant is', discriminant,
"which is Negative")
print('Hence No Real Solutions')
# Driver Code
a = 20
b = 30
c = 10
discriminant(a, b, c)
// C# program to calculate
// discriminant
using System;
class GFG
{
// function to calculate
// discriminant
static int disc(int a,
int b, int c)
{
int dis = (int)Math.Pow(b, 2) -
(4 * a * c);
return dis;
}
// Driver Code
public static void Main()
{
int a = 20;
int b = 30;
int c = 10;
int discriminant = disc(a, b, c);
if (discriminant > 0)
{
Console.WriteLine("Discriminant is " +
discriminant +
" which is Positive");
Console.WriteLine("Hence Two Solutions");
}
else if (discriminant == 0)
{
Console.WriteLine("Discriminant is " +
discriminant +
" which is Zero");
Console.WriteLine("Hence One Solution");
}
else
{
Console.WriteLine("Discriminant is "+
discriminant +
" which is Negative");
Console.WriteLine("Hence No Real Solutions");
}
}
}
// This code is contributed
// by anuj_67.
<?php
// PHP program to calculate Discriminant
function discriminant($a, $b, $c)
{
$discriminant = ($b * $b) - (4 * $a * $c);
if($discriminant > 0)
{
echo "Discriminant is ", $discriminant,
" which is Positive\n";
echo "Hence Two Solutions";
}
else if($discriminant == 0)
{
echo "Discriminant is ", $discriminant,
" which is Zero\n";
echo "Hence One Solution";
}
else if($discriminant < 0)
{
echo "Discriminant is ", $discriminant,
" which is Negative\n";
echo "Hence No Real Solutions";
}
}
// Driver code
$a = 20;
$b = 30;
$c = 10;
// function call to print discriminant
discriminant($a, $b, $c);
// This code is contributed
// by Shashank_Sharma
?>
<script>
// javascript program to calculate discriminant
// function to calculate discriminant
function disc(a , b , c) {
var dis = parseInt( Math.pow(b, 2) - (4 * a * c));
return dis;
}
// Driver Code
var a = 20;
var b = 30;
var c = 10;
var discriminant = disc(a, b, c);
if (discriminant > 0) {
document.write("Discriminant is " + discriminant + " which is Positive<br/>");
document.write("Hence Two Solutions");
} else if (discriminant == 0) {
document.write("Discriminant is " + discriminant + " which is Zero<br/>");
document.write("Hence One Solution");
} else {
document.write("Discriminant is " + discriminant + " which is Negative<br/>");
document.write("Hence No Real Solutions");
}
// This code is contributed by todaysgaurav
</script>
Output:
Discriminant is 100 which is Positive Hence Two Solutions
Time Complexity: O(1) since constant operations are being performed
Auxiliary Space: O(1), since no extra space has been taken.