PAT乙級刷題日誌---1013(20 分) 數素數
阿新 • • 發佈:2018-12-16
令 Pi 表示第 i 個素數。現任給兩個正整數 M≤N≤104,請輸出 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
思路:
- 判斷素數1007裡知道的簡單方法:判斷k是否為素數只需要除到根號k就行了。
- 一個計數器記錄是第幾個素數
程式碼:
#include <iostream> #include <math.h> using namespace std; int main(){ int M,N; cin >> M >> N; if(N<M) return 0; int i,j,temp,count; j=2; count=0; //計數器 temp =0; while(count!=N){ temp=sqrt(j); for(i=2;i<=temp;i++){ if(j%i==0) break; } //判斷是否為素數 if(i>=temp+1){ count++; //判斷是否是範圍內的素數 if(count>=M && count <=N){ //10個數換行 if((count-M+1)%10==0){ cout << j << endl; } else{ //是否為最後一個數 if(count==N) cout << j; else cout << j << " "; } } } j++; } }
總結:
- 和1007相比,都是需要依次選出素數。不同的是需要一個計數器來記錄素數的個數,也依次來代表素數的位置