Prime Factorization : SPOJ Problem

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prime;

/**
 *
 * @author Tamanna Afroze
 */

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class Prime {

    /**
     * @param args the command line arguments
     */
    boolean haveFactor(int iNumber){
        int iFactors[] = new int[10000];
        int iIndex = 0;
        iFactors[iIndex] = 1;
        iIndex++;
        iFactors[iIndex] = iNumber;
        iIndex++;
       
        if(iNumber != 2 && (iNumber%2)==0){
            iFactors[iIndex] = 2;
            iIndex++;
            iNumber /=2;
            if( iNumber != 2 ){
                iFactors[iIndex] = iNumber;
                iIndex++;
            }                     
            int iLoop = 2;
            if( iNumber != 2 ){
                while((iNumber%2) != 1){               
                    iFactors[iIndex] = 2*iLoop;
                    //System.out.println("Here :" + iFactors[iIndex]);
                    iIndex++;
                    iNumber /= 2;
                    iFactors[iIndex] = iNumber;
                    iIndex++;
                    iLoop *= 2;
                }
            }
            if(iNumber != 3 && (iNumber%3)==0){
                iFactors[iIndex] = 3;
                iIndex++;
                iNumber /=3;
                if( iNumber != 3 ){
                    iFactors[iIndex] = iNumber;
                    iIndex++;
                }
                iLoop = 3;
                if( iNumber != 3 ){
                    while((iNumber%3) != 1){               
                        iFactors[iIndex] = 3*iLoop;
                        //System.out.println("Here :" + iFactors[iIndex]);
                        iIndex++;
                        iNumber /= 3;
                        if( iNumber != 3 ){
                            iFactors[iIndex] = iNumber;
                            iIndex++;
                        }
                        iLoop *= 3;
                    }
                }
            }
            for(int i =0; i<iIndex; i++){
                //System.out.println(iFactors[i]);
            }
            return true;
        }
        else if(iNumber != 3 && (iNumber%3)==0){
            iFactors[iIndex] = 3;
            iIndex++;
            iNumber /=3;
            if( iNumber != 3 ){
                iFactors[iIndex] = iNumber;
                iIndex++;
            }
            int iLoop = 3;
            while(iNumber != 3 && (iNumber%3) != 1){               
                iFactors[iIndex] = 3*iLoop;
                //System.out.println("Here :" + iFactors[iIndex]);
                iIndex++;
                iNumber /= 3;
                if( iNumber != 3 ){
                    iFactors[iIndex] = iNumber;
                    iIndex++;
                }
                iLoop *= 3;
            }
            for(int i =0; i<iIndex; i++){
                //System.out.println(iFactors[i]);
            }
            return true;
        }
        else{
            return false;
        }       
    }
   
    public void Operation(){
        String number,numberofinput,first,second;
        int index = 0,iFirst = 0,iSecond = 0, iNumberOfInput = 0;
       
        try{
            File file = new File("input.txt");
            FileReader fileReader = new FileReader(file);
            BufferedReader bufferedReader = new BufferedReader(fileReader);
                      
            FileWriter fileWriter = new FileWriter("output.txt");
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
           
            while((number = bufferedReader.readLine()) != null){
                if(index == 0){
                    numberofinput = number;
                    iNumberOfInput = Integer.parseInt(numberofinput);
                }               
                else{
                    StringTokenizer tokenizer = new StringTokenizer(number);
                    while(tokenizer.hasMoreTokens()){
                        first = tokenizer.nextToken();
                        second = tokenizer.nextToken();
                        System.out.println("First: " + first + " Second: " + second); 
                        iFirst = Integer.parseInt(first);
                        iSecond = Integer.parseInt(second);
                    }
                    System.out.println("Integer Version First: " + iFirst + " Second: " + iSecond);
                    if(iFirst >= 1 && iSecond >= iFirst && iSecond <= 1000000000 && iSecond-iFirst <= 100000){
                       
                        for(int k = iFirst; k<=iSecond ; k++ ){
                            if(k!=1){
                                boolean result = haveFactor(k);
                           
                                if(!result){                                    
                                    String sPrime = Integer.toString(k);
                                    bufferedWriter.write(sPrime);
                                    bufferedWriter.newLine();
                                }
                                iFirst++;
                            }
                        }
                    }
                    else{
                        System.out.println("Input Error Occured: m and n are not in the specified Range");
                    }
                }
                index++;
                bufferedWriter.newLine();
            }
            bufferedWriter.flush();
            bufferedWriter.close();           
        }
        catch(IOException iox){
            iox.printStackTrace();
        }
       
    }
   
    public static void main(String[] args) {
        // TODO code application logic here
        Prime object = new Prime();
        object.Operation();       
        //boolean bHave = object.haveFactor(7);
        //System.out.println("The output of the Factor function is: " + bHave);
    }
}

Comments

Popular posts from this blog

Puzzle

Importing Java Library

Examples on mod_rewrite