【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; }