Composite Magic Program in Java | ISC Computer Science 2023 Paper 2

A Composite Magic number is a positive integer which is composite as well as a magic number.

Composite number: A composite number is a number that has more than two factors.
Example: 10
Factors are: 1, 2, 5, 10

Magic number: A magic number is a number in which the eventual sum of the digits is equal to 1.
Example: 28
2 + 8 = 10
1 + 0 = 1

Accept two positive integers m and n, where m is less than n as user input. Display the number of Composite Magic integers that are in the range between m and n (both inclusive) and output them along with the frequency, in the format specified below:

Test your program for the following data and some random data:

Example 1
INPUT:
m = 40
n = 100
OUTPUT:
THE COMPOSITE MAGIC INTEGERS ARE:
46, 55, 64, 82, 91, 100
FREQUENCY OF COMPOSITE MAGIC INTEGERS IS: 6

Example 2
INPUT:
m = 1210
n = 1300
OUTPUT:
THE COMPOSITE MAGIC INTEGERS ARE:
1216, 1225, 1234, 1243, 1252, 1261, 1270, 1288
FREQUENCY OF COMPOSITE MAGIC INTEGERS IS: 8

Example 3
INPUT:
m = 120
n = 97
OUTPUT:
INVALID INPUT

import java.util.Scanner;
class CompositeMagic{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        System.out.print("m = ");
        int m = Integer.parseInt(in.nextLine());
        System.out.print("n = ");
        int n = Integer.parseInt(in.nextLine());
        if(m >= n){
            System.out.println("INVALID INPUT");
            return;
        }
        int count = 0;
        System.out.println("THE COMPOSITE MAGIC INTEGERS ARE:");
        for(int i = m; i <= n; i++){
            if(isComposite(i) && isMagic(i)){
                System.out.print(i + " ");
                count++;
            }
        }
        if(count == 0)
            System.out.print("NIL");
        System.out.println("\nFREQUENCY OF COMPOSITE MAGIC INTEGERS IS: " + count);
    }
    public static boolean isComposite(int n){
        if(n <= 3)
            return false;
        for(int i = 2; i < n; i++){
            if(n % i == 0)
                return true;
        }
        return false;
    }
    public static boolean isMagic(int n){
        while(n > 9){
            int sum = 0;
            for(int i = n; i > 0; i /= 10)
                sum += i % 10;
            n = sum;
        }
        return n == 1;
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *