forked from Algo-Phantoms/Algo-Tree
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pronic_Number.cpp
61 lines (50 loc) · 1.55 KB
/
pronic_Number.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
A pronic number is a number which is the product of two consecutive integers.
Such as 2=2*1 (2 and 1 are consecutive numbers)
12=4*3
This program will print the pronic numbers in the given range.
*/
#include <iostream>
#include <math.h>
using namespace std;
/* Function to check whether number is pronic or not
A number is pronic if the root of equation i^2+i-num=0 is real and integer.
So, the discriminant of equation should be positive, odd and perfect square for number to be pronic*/
bool is_pronic(int num)
{
int dis = 1 + 4 * num;
//checking discriminant is positive,odd and perfect square
if (dis >= 0 && floor(sqrt(dis)) == sqrt(dis))
return true;
else
return false;
}
int main()
{
int ll, hl;
cout << "Enter the range for which you want to print PRONIC NUMBERS:\n";
cout << "Enter lower limit:";
cin >> ll;
cout << "Enter higher limit:";
cin >> hl;
//Printing pronic numbers in given range
cout << "Pronic numbers from " << ll << " to " << hl << " are:\n";
for (int i = ll; i <= hl; i++)
{
if (is_pronic(i))
cout << i << " ";
}
}
/*
Sample Input/Output:
Input:
Enter the range for which you want to print PRONIC NUMBERS:
Enter lower limit:1
Enter higher limit:1000
Output:
Pronic numbers from 1 to 1000 are:
2 6 12 20 30 42 56 72 90 110 132 156 182 210 240 272 306 342 380 420 462 506 552 600 650 702 756 812 870 930 992
Time Complexity:O(n) where n is total numbers in range
Time Complexity of is_pronic()=O(1)
Space Complexity:O(1)
*/