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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/algogeeks?hl=en.