如何从 Java 中的 CSV 文件中查找质数?

How to find prime numbers from CSV file in Java?

我需要创建一个程序,从文件中读取任意数量的逗号分隔整数并处理这些数字。

还必须指定每个数字是否为素数;如果数字不是质数,程序将按降序显示其唯一因子。

我无法显示文件中的素数 primeOrNot.csv

到目前为止,这是我的代码,我们将不胜感激:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class PrimeFactors {

public static boolean checkForPrime(int number) {
    boolean isItPrime = true;
    if(number <= 1) {
        isItPrime = false;
        return isItPrime;
    } else {
        for(int i = 2; i <= number/2; i++ ) {
            if ((number % i) == 0) {
                isItPrime = false; 
                break;
            }
        }
        return isItPrime;
    }
}

public static void main(String[] args) {
    String path = "/Users/benharrington/Desktop/primeOrNot.csv";
    String line = "";
    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        while((line = br.readLine()) != null) {
            int i = Integer.parseInt(line);
            boolean isItPrime = checkForPrime(i);
            System.out.println(i);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

使用此代码,它按要求工作:

public class PrimeFactors   {

public static void findFactor(int n) {
    System.out.print("Factors for the number " + n + " is : ");
    for (int i = n; i >= 1; i--) {
        if (n % i == 0)
            System.out.print(i + " ");
    }
}

public static boolean checkForPrime(int number) {

    boolean isItPrime = true;

    if (number <= 1) {
        isItPrime = false;
        return isItPrime;
    } else {
        for (int i = 2; i <= number / 2; i++) {
            if ((number % i) == 0) {
                isItPrime = false;
                break;
            }
        }

        return isItPrime;
    }

}

public static void main(String[] args) {

    String path = "/Users/benharrington/Desktop/primeOrNot.csv";
    String line = "";

    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        ArrayList<Integer> list = new ArrayList<Integer>();

        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");

            for (String str : values) {
                int i = Integer.parseInt(str);
                boolean isItPrime = checkForPrime(i);

                if (isItPrime)
                    System.out.println(i + " is Prime");
                else
                    System.out.println(i + " is not Prime");

                if (isItPrime == false) {
                    list.add(i);

                }

            }
            for (int k : list) {
                System.out.println(" ");
                findFactor(k);

            }

        }

    } catch (FileNotFoundException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }

}
}