I don't know whether my one is good algorithm or not, but it gives somewhat good output. It is in Java.
/* * 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); } } Sincerely, Tamanna -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.