zoukankan      html  css  js  c++  java
  • Day015 PAT乙级 1013 数素数

    PAT乙级 1013 数素数

    题目

    分析

    1. 输入m,n,然后输出第m个到第n个素数,每行输出10个数字
    2. 先把第1个到第n个素数求出来,然后输出第m个到第n个
    3. 使用数组将求出来的素数存储下来,由于n最大值为10000,所以数组大小设置为10001,防止越界
    4. 求出素数后再用一个for循环输出m到n的素数,注意每行输出10个,每行最后一个数字不能有空格

    代码

    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            int m = cin.nextInt();
            int n = cin.nextInt();
            int[] num = new int[10001];
            num[0] = 2;
            int count = 1;
            for (int i = 3; i <= 110000; i += 2) {//让i小于第一万个素数
                boolean flag = true;
                for (int j = 0; j < count && j < Math.sqrt(i); ++j) {
                    if (i % num[j] == 0) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    num[count] = i;		//把素数存储进数组,下标表示第几个素数
                    ++count;
                }
                if (count > n) break;	//第n个素数之后没必要计算,跳出循环节约时间
            }
            boolean flag = false;
            for (int i = m - 1; i < n; i++) {//数组是从0开始的,所以从m-1开始输出,n-1结束
                if ((i - m + 2) % 10 == 1) flag = false;	//判断是否处于每行开头,如果是,则flag变为false
                if (flag) System.out.print(" ");			//在输出数字前输出空格,这样每行末尾就没有空格了
                System.out.print(num[i]);
                if ((i - m + 2) % 10 == 0 && (i - m) != 0) System.out.println();//判断当前行是否有10个数字,如果有则换行
                flag = true;
            }
            cin.close();
        }
    }
    
  • 相关阅读:
    mysql索引
    数据库修复
    数据库取值 三级分类后台遍历
    创建数据库!
    mysql按条件 导出sql
    nodejs 简单安装环境
    C++ 性能剖析 (一)
    C++ 性能剖析 (二):值语义 (value semantics)
    JavaScript Nested Function 的时空和身份属性
    C++ Reference 的“三位一体”诠释
  • 原文地址:https://www.cnblogs.com/mooncell/p/14827739.html
Copyright © 2011-2022 走看看