1. 程式人生 > 其它 >Basic Level ----- 1013 數素數 (20分)

Basic Level ----- 1013 數素數 (20分)

技術標籤:PAT Basic Levelc++

前言

環境:C++(g++6.5.0)

題目

在這裡插入圖片描述

輸入格式:

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

輸出格式:

在這裡插入圖片描述

輸入樣例:

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

華點

  1. 從2開始依次判斷素數,記錄個數
  2. 邊界問題

程式碼

/*1013 數素數 (20分)*/

#include <iostream>
#include <cmath>
using namespace std;

int arr[1000]
; bool isPrime(int n){ if(n==2||n==3||n==5||n==7) return true; for(int i=3;i<=sqrt(n);i+=2){ if(n%i==0) return false; } return true; } int main(){ int M,N; cin>>M>>N; int pos=0; //記錄下一個需要儲存的素數位置 ,從0開始 int count=0; //當前是第幾個素數 ,從0開始 int pri=2; //當前素數的大小 while(count<
N){ if(isPrime(pri)){ count++; if(count>=M) arr[pos++]=pri; } if(pri==2) pri++; else pri+=2; } int f=0; for(int i=0;i<pos;i++){ if(f==0) f++; else cout<<" "; cout<<arr[i]; if(i%10==9){ cout<<endl; f=0; } } return 0; }