PAT 1013 数素数 (20)
生活随笔
收集整理的這篇文章主要介紹了
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(" ");}} }過程資料
測試點:
轉載于:https://www.cnblogs.com/tangyikejun/p/4300409.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的PAT 1013 数素数 (20)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个想法:成立草根技术联盟对开发人员进行
- 下一篇: 微信公众号开发获取openid