ISC practical papers › ISC 2021 Specimen Paper › Question 3
Möbius Function
ISC 2021 Specimen Paper Computer Science Practical, Question 3 · Number programs
The question
The question is explained at the start of the video.
Question: ISC 2021 Specimen Paper Computer Science Paper 2 (Practical), Question 3, set by the Council for the Indian School Certificate Examinations (CISCE). Solution and video: Vinay Singh.
Java solution
import java.util.*;
class Mobius{
private int N, product,temp, factorCount;
private boolean duplicateFound;
private String primeFactors;
public Mobius(int N){
this.N = N;
product=1;
primeFactorization();
}
public void primeFactorization(){
temp=N;
duplicateFound=false;
factorCount=0;
primeFactors=N+" = ";
int divisor=2, half=N/2;
factorize(divisor);
for(divisor=3; divisor<=half; divisor+=2){
factorize(divisor);
}
}
public void factorize(int divisor){
int currentFactorCount=0;
while(temp%divisor==0){
primeFactors+=divisor+" x ";
temp/=divisor;
currentFactorCount++;
factorCount++;
product*=-1;
}
if(duplicateFound==false){
duplicateFound = currentFactorCount>1;
}
}
public int getMobius(){
if(N==1)return 1;
if(duplicateFound) return 0;
return product;
}
public String toString(){
primeFactors = primeFactors.substring(0, primeFactors.length()-2);
String output="\t"+primeFactors+"\n\t";
if(N==1){
output="\t1 = 1\n\tNO PRIME FACTORS";
}else if(duplicateFound){
output+="DUPLICATE PRIME FACTORS";
}else{
output+="NUMBER OF DISTINCT PRIME FACTORS = "+factorCount;
}
output+="\n\tM("+N+") = "+getMobius();
return output;
}
}
class ISC2021SpecimenQ3{
public static void main(String[] args) {
Scanner in = new Scanner( System.in );
System.out.print("INPUT:\t");
int N = in.nextInt();
Mobius obj = new Mobius(N);
System.out.println("OUTPUT:"+obj);
in.close();
}
}
All these solutions in one free book
Pragmatic Solutions to ISC Computer Science Practical Problems collects every program from 2004 to 2021 in a 202-page PDF.