Categories
Class 11 Class 12

Mobius Function in Java ISC Practical Specimen 2021 Solved

A MOBIUS function M(N) returns the value -1 or 0 or 1 for a natural number (N) by the following conditions are defined:
When,
M(N) = 1 if N = 1
M(N) = 0 if any prime factor of N is contained in N more than once.
M(N) = (-1)P if N is the product of ‘P’ distinct prime factors.
Write a program to accept a positive natural number (N) and display the MOBIUS result with proper message.

Design your program which will enable the output in the format given below:

Sample 1:
INPUT: 78
OUTPUT:
78 = 2 × 3 × 13
NUMBER OF DISTINCT PRIME FACTORS = 3
M(78) = -1

Sample 2:
INPUT: 34
OUTPUT:
34 = 2 × 17
NUMBER OF DISTINCT PRIME FACTORS = 2
M(34) = 1

Sample 3:
INPUT: 12
OUTPUT:
12 = 2 × 2 × 3
DUPLICATE PRIME FACTORS
M(12) = 0

Sample 4:
INPUT: 1
OUTPUT:
1 = 1
NO PRIME FACTORS
M(1) = 1

import java.util.Scanner;
class Mobius{
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        System.out.print("N = ");
        int n = Integer.parseInt(in.nextLine());
        int m = mob(n);
        System.out.println("M(" + n + ") = " + m);
    }
    public static int mob(int n){
        int pf = 2;
        int total = 0;
        boolean distinct = true;
        if(n == 1){
            System.out.println("NO PRIME FACTORS");
            return 1;
        }
        while(n > 1){
            int count = 0;
            while(n % pf == 0){
                n /= pf;
                System.out.print(pf);
                count++;
                total++;
                if(count > 1)
                    distinct = false;
                if(n > 1)
                    System.out.print(" x ");
            }
            pf++;
        }
        System.out.println();
        if(distinct){
            System.out.println("NUMBER OF DISTINCT PRIME FACTORS = " + total);
            if(total % 2 == 0)
                return 1;
            else
                return -1;
        }
        System.out.println("DUPLICATE PRIME FACTORS");
        return 0;
    }
}