【PAT乙級】數素數

  • 2019 年 11 月 8 日
  • 筆記

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/weixin_42449444/article/details/84866104

題目描述:

令Pi表示第i個素數。現任給兩個正整數M <= N <= 10000,請輸出PM到PN的所有素數。

輸入描述:

輸入在一行中給出M和N,其間以空格分隔。

輸出描述:

輸出從PM到PN的所有素數,每10個數字佔1行,其間以空格分隔,但行末不得有多餘空格。

輸入樣例:

5 27

輸出樣例:

11 13 17 19 23 29 31 37 41 43  47 53 59 61 67 71 73 79 83 89  97 101 103

解題思路:

首先自定義一個isPrime(int n)的函數用來判斷一個數是否為素數,然後再主函數中用count來記錄素數的個數,當count在[m,n]這個範圍內時,對這個素數進行輸出,需要注意的是行末沒有多餘空格,每10個素數換一行。

AC代碼:

#include <bits/stdc++.h>  using namespace std;    bool isPrime(int n)  {      if(n<=1)      {          return false;      }      for(int i=2;i<=sqrt(n);i++)      {          if(n%i==0)          {              return false;          }      }      return true;  }    int main()  {      int m,n;      cin >> m >> n;      int a[10001];      for(int i=1, j=1;j<=10000;i++)      {          if(isPrime(i))          {              a[j++] = i;          }      }      int count = 0;      for (int i = m; i <= n; i++)      {          if(count == 0)          {              cout << a[i];          }          else          {              cout <<  " " << a[i];          }          count++;          if(count%10 == 0)          {              count = 0;              cout << endl;          }      }      return 0;  }