编写程序,写一个静态方法,方法中随机生成200个三位整数,找出其中的素数,并保存到文件prime.txt中。

题目

编写程序,写一个静态方法,方法中随机生成200个三位整数,找出其中的素数,并保存到文件prime.txt中。然后再另编写一个静态方法从文件中读出这些素数,并以每行10个的形式输出这些素数。在主方法中进行测试。
提示:建议使用类DataOutputStream、DataInputStream、FileInputStream、FileOutputStream

package comprehensive_test.test2;

import java.io.*;

/**
 * @Auther: 茶凡
 * @ClassName Prime
 * @Description TODO
 * @date 2023/6/8 15:15
 * @Version 1.0
 */
public class Prime {
    
    
    public static void main(String[] args) {
    
    
        generateRandom();
        findPrime();
    }


    public static void generateRandom(){
    
    
        File file = new File("src\\comprehensive_test\\test2\\random.txt");
        try {
    
    
            FileOutputStream fos = new FileOutputStream(file);

            DataOutputStream dos = new DataOutputStream(fos);

            for (int i = 0; i <200 ; i++) {
    
    
                int num = (int) (Math.random()*100) + 100;
                //System.out.println(num);
                dos.writeInt (num);
               // dos.writeUTF("\n");
            }
            // 关闭流
            dos.close();
            fos.close();
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }

    }

    public static void findPrime(){
    
    
        File file = new File("src\\comprehensive_test\\test2\\random.txt");
        File file1 = new File("src\\comprehensive_test\\test2\\prime.txt");
        try {
    
    
            FileInputStream fis = new FileInputStream(file);
            DataInputStream dis = new DataInputStream(fis);

            FileOutputStream fos = new FileOutputStream(file1);
            DataOutputStream dos = new DataOutputStream(fos);

            while (dis.available()>0){
    
    
                int i = dis.readInt();
                if(isPrime(i)){
    
    
                    dos.writeInt(i);
                }

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

    }

    public static boolean isPrime(int num) {
    
    
        // 如果 num 小于等于 1 则不是素数
        if (num <= 1) {
    
    
            return false;
        }

        // 如果 num 等于 2,则是素数
        if (num == 2) {
    
    
            return true;
        }

        // 如果 num 是偶数,则不是素数
        if (num % 2 == 0) {
    
    
            return false;
        }

        // 判断 num 是否能被奇数整除
        for (int i = 3; i <= Math.sqrt(num); i += 2) {
    
    
            if (num % i == 0) {
    
    
                return false;
            }
        }
        // 如果上述条件都不满足,则 num 是素数
        return true;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_45833112/article/details/131155628