Given a number N, the task is to check whether the number is a Sublime number or not.
Sublime numbers are defined as positive numbers whose sum of positive divisors and count of positive divisors are both perfect numbers.
Examples:
Input: N = 12
Output: True
Explanation: 12 is a sublime number because its divisors are 1, 2, 3, 4, 6, and 12. So there are 6 factors of it and 6 is a perfect number and 1+2+3+4+6+12=28, which is also a perfect number. So 12 is a Sublime number.Input: N = 24
Output: False
Explanation: 24 is a not sublime number because the divisors of 24 are 1, 2, 3, 4, 6, 8, 12 and 24. So there are 8 factors and which is not a perfect number and 1+2+3+4+6+8+12+24=60, Which is not a perfect number. So 24 is not a Sublime number.
Approach: We have to implement two main logic:
- Find and Count Divisors of a Number Logic
- Perfect Number Checking.
Below are the steps involved in the implementation of the code:
- Initialize a number n.
- Find the divisors of the given number (n).
- Count the total number of divisors of the given number (n) and store it in a variable (count).
- Sum up the divisors, and store the result in a variable (sum).
- At last, check whether count and sum are perfect numbers or not.
- If both are perfect numbers, the given number (n) is a sublime number.
- Else, not a sublime number.
Below is the implementation of the code:
C++
// C++ Implementation to Check whether // a number is Sublime Number or Not. #include <iostream> using namespace std; // Check whether the number is // sublime or not void checkSublime( int num) { int s = 0, f = 0, s1 = 0, s2 = 0, i, j; for (i = 1; i <= num; i++) { if (num % i == 0) { // Finds the divisors // and sum up them s = s + i; // Counts the number // of divisors f++; } } // Check for perfect number for (j = 1; j < s; j++) { if (s % j == 0) s1 = s1 + j; } for (j = 1; j < f; j++) { if (f % j == 0) s2 = s2 + j; } if (s1 == s && s2 == f) cout << "True" << endl; else cout << "False" << endl; } // Driver code int main() { int n = 12; // Function call checkSublime(n); return 0; } |
Java
// java program to Check whether the number is sublime or // not public class SublimeNumber { // Check whether the number is sublime or not public static void checkSublime( int num) { int s = 0 , f = 0 , s1 = 0 , s2 = 0 , i, j; for (i = 1 ; i <= num; i++) { if (num % i == 0 ) { // Finds the divisors and sums them up s = s + i; // Counts the number of divisors f++; } } // Check for perfect number for (j = 1 ; j < s; j++) { if (s % j == 0 ) s1 = s1 + j; } for (j = 1 ; j < f; j++) { if (f % j == 0 ) s2 = s2 + j; } if (s1 == s && s2 == f) System.out.println( "True" ); else System.out.println( "False" ); } // Driver code public static void main(String[] args) { int n = 12 ; // Function call checkSublime(n); } } // This code is contributed by shivamgupta0987654321 |
Python3
# python3 Implementation to Check whether # a number is Sublime Number or Not. def checkSublime(num): s = 0 f = 0 s1 = 0 s2 = 0 for i in range ( 1 , num + 1 ): if num % i = = 0 : # Finds the divisors and sums them up s + = i # Counts the number of divisors f + = 1 # Check for perfect number for j in range ( 1 , s): if s % j = = 0 : s1 + = j for j in range ( 1 , f): if f % j = = 0 : s2 + = j if s1 = = s and s2 = = f: print ( "True" ) else : print ( "False" ) # Driver code if __name__ = = "__main__" : n = 12 # Function call checkSublime(n) # This code is contributed by shivamgupta310570 |
C#
// C# Implementation to Check whether // a number is Sublime Number or Not. using System; public class SublimeNumber { // Check whether the number is sublime or not public static void CheckSublime( int num) { int s = 0, f = 0, s1 = 0, s2 = 0, i, j; for (i = 1; i <= num; i++) { if (num % i == 0) { // Finds the divisors and sums them up s = s + i; // Counts the number of divisors f++; } } // Check for perfect number for (j = 1; j < s; j++) { if (s % j == 0) s1 = s1 + j; } for (j = 1; j < f; j++) { if (f % j == 0) s2 = s2 + j; } if (s1 == s && s2 == f) Console.WriteLine( "True" ); else Console.WriteLine( "False" ); } // Driver code public static void Main( string [] args) { int n = 12; // Function call CheckSublime(n); } } |
Javascript
// Check whether the number is // sublime or not function checkSublime(num) { let s = 0, f = 0, s1 = 0, s2 = 0; for (let i = 1; i <= num; i++) { if (num % i === 0) { // Finds the divisors // and sum up them s += i; // Counts the number // of divisors f++; } } // Check for perfect number for (let j = 1; j < s; j++) { if (s % j === 0) s1 += j; } for (let j = 1; j < f; j++) { if (f % j === 0) s2 += j; } if (s1 === s && s2 === f) console.log( "True" ); else console.log( "False" ); } // Driver code const n = 12; // Function call checkSublime(n); |
True
Time Complexity: O(N)
Auxiliary Space: O(1) as using constant variables
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!