Python - Number Based Problem | Hackerrank

Author: neptune | 17th-Aug-2023

Problem statement: 

Create the test() function, which takes the integer "n" as input and prints the following outputs:

1. Sort a number in descending order

2. Determine whether the number in descending order is a prime or not. If the number is a prime, then print "Sorted Number is a prime number," otherwise, print "Sorted Number is not a prime number."

3. Determine all of the factors of the descending order number.

4. Finally, sort the given number in ascending order.


Input Format For Custom Testing

  1. Input is the integer 'n'

Sample Case 0:

Sample Input For Custom Testing

78343


Sample Output:

87433 

Sorted Number is a prime number

1

87433

33478

Explanation:

1. Descending order of the given number 78343 is 87433

2. The descending order number is a prime number. So, have to print "Sorted Number is a prime number"

3. The factors of 87433 are 1 and 87433

4. Ascending order of given number 78343 is 33478


Sample Case 1:

Sample Input For Custom Testing

11261


Sample Output: 

62111

Sorted Number is not a prime number

1

7

19

133

467

3269

8873

62111

11126

Explanation:

1. Descending order of the given number 11261 is 62111

2. The descending order number is not a prime number. So, have to print "Sorted Number is not a prime number"

3. The factors of 62111 are 1,7,19,133,467,3269,8873 and 62111

4. Ascending order of given number 11261 is 11126


Complete solution:


def is_prime(num):

    if num <= 1:

        return False

    for i in range(2, int(num ** 0.5) + 1):

        if num % i == 0:

            return False

    return True


def test(n):

    #write yout code here

    # Convert the number to a string, sort it in descending order, and convert it back

    sorted_descending = int(''.join(sorted(str(n), reverse=True)))

   

    print(sorted_descending)

   

    if is_prime(sorted_descending):

        print("Sorted Number is a prime number")

    else:

        print("Sorted Number is not a prime number")

   

    factors = [i for i in range(1, sorted_descending + 1) if sorted_descending % i == 0]

    for fact in factors:

        print(fact)

   

    # Convert the number to a string, sort it in ascending order, and convert it back

    sorted_ascending = int(''.join(sorted(str(n))))

    return sorted_ascending

if __name__ == '__main__':

    n = input()

    print(test(n))



Execution results:

Sample Case 0:


Sample Case 1:


Conclusion

In conclusion, the 'test()' function efficiently addresses the problem by sorting the input number first, assessing its primality, listing factors, and ultimately presenting the ascending order. It offers a comprehensive analysis of the number, showcasing its descending and ascending arrangements along with its primality and factorization properties.