日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PAT 1013 数素数 (20)

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT 1013 数素数 (20) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

/*1013. 數素數 (20)令Pi表示第i個素數。現任給兩個正整數M <= N <= 10^4,請輸出PM到PN的所有素數。輸入格式:輸入在一行中給出M和N,其間以空格分隔。輸出格式:輸出從PM到PN的所有素數,每10個數字占1行,其間以空格分隔,但行末不得有多余空格。輸入樣例:5 27輸出樣例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103*/

思路

// 先得到前1000個素數 // 再根據輸入進行輸出

代碼

#include <cstdio> #include <iostream> #include <cstring> #include <cmath> using namespace std;#define NUM 10004 int primes[NUM];void findPrimes(){//如果不能被任何一個質數整除,那就是質數int cnt=0;// 第cnt個質數,從1開始計數int a = 2;// 從2開始的自然數 awhile (cnt <= NUM) {// 優化1:排除偶數if (a % 2 == 0 && a != 2) {++a;continue;}int i = 0;// 優化2:不超過第cnt個質數的開方數for (i = 0; i < sqrt(cnt); ++i) {if (a % primes[i] == 0) {break;}}if (i >= sqrt(cnt)) {primes[cnt] = a;cnt++;}++a;}} int main(){// 預處理findPrimes();// 輸入數據int m,n;cin >> m >> n;// 按格式輸出for(int i = m; i <= n; ++i){cout << primes[i-1];if ((i-m+1) % 10 == 0 || i == n) { // cout << endl;printf("\n");}else{ // cout << ' ';printf(" ");}} }

過程資料

測試點:

  • 共7個測試點,測試點4是一個較大數測試,其他都是小數目,因此如果無法給出較好的大數處理方案可以做小數處理取得部分分數。
  • 轉載于:https://www.cnblogs.com/tangyikejun/p/4300409.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的PAT 1013 数素数 (20)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。