前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#版 - PAT乙级(Basic Level)真题 之 1013.数素数_牛客网

C#版 - PAT乙级(Basic Level)真题 之 1013.数素数_牛客网

作者头像
Enjoy233
发布2019-03-05 15:44:15
6800
发布2019-03-05 15:44:15
举报

C#版 - PAT乙级(Basic Level)真题 之 1013.数素数(打印给定范围内的素数)_牛客网

在线提交: https://www.nowcoder.com/pat/6/problem/4079 或 PTA(拼题A,原PAT) https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112

题目描述

令PiPiP_i表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PMPMP_M到PNPNP_N的所有素数。

输入描述:

代码语言:javascript
复制
输入在一行中给出M和N,其间以空格分隔。

输出描述:

输出从PMPMP_M到PNPNP_N的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入例子:

代码语言:javascript
复制
5 27

输出例子:

代码语言:javascript
复制
11 13 17 19 23 29 31 37 41 43

47 53 59 61 67 71 73 79 83 89

97 101 103

思路:

使用筛法(厄拉多塞Eeatosthese - SieveMethod法)来求素数。 然后按要求的格式输出素数即可~

已AC代码:

代码语言:javascript
复制
using System;

namespace Pat1_PrintPrime
{
    public class Solution
    {
        public const int N = 200005;  // Set a szie enough to store.
        public void PrintPrimes(int m, int n)
        {
            int[] primes = new int[N];
            bool[] isDelete = new bool[N];  
            int index = 0;
            int count = 0;

            for (int i = 2; i * i < N; i++)
            {
                if (!isDelete[i])
                {                    
                    for (int j = i; i * j < N; j++)
                    {
                        isDelete[i * j] = true;
                    }                    
                }
            }
            for (int i = 2; i < N; i++)
            {
                if (isDelete[i] == false)
                {
                    primes[index++] = i;
                }
            }

            for (int i = m; i <= n; i++)
            {
                Console.Write(primes[i - 1]);
                if (++count % 10 == 0 && i != n)
                    Console.WriteLine();          // new line
                else if (i != n)
                    Console.Write(" ");
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string sb;
            while ((sb = Console.ReadLine()) != null)
            {
                string[] s = sb.Split();
                int m = int.Parse(s[0]);
                int n = int.Parse(s[1]);

                var sol = new Solution();
                sol.PrintPrimes(m, n);
            }
        }
    }
}

Rank:

RankInC#Sub
RankInC#Sub
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年06月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#版 - PAT乙级(Basic Level)真题 之 1013.数素数(打印给定范围内的素数)_牛客网
  • 题目描述
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档